{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Quantum Volume\n",
    "\n",
    "\n",
    "## Introduction\n",
    "\n",
    "**Quantum Volume (QV)** is a method to verify device performance and a metric to quantify the computational power of a quantum device.  The method is based on the paper \"Validating quantum computers using randomized model circuits\" (https://arxiv.org/abs/1811.12926). \n",
    "\n",
    "This notebook gives an example for how to use the ``ignis.verification.quantum_volume`` module. This particular example shows how to run up to depth 6 quantum volume circuits and will run them using the noisy Aer simulator."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:35.708493Z",
     "start_time": "2019-12-10T22:04:33.913271Z"
    }
   },
   "outputs": [],
   "source": [
    "#Import general libraries (needed for functions)\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from IPython import display\n",
    "\n",
    "#Import Qiskit classes classes\n",
    "import qiskit\n",
    "from qiskit.providers.aer.noise import NoiseModel\n",
    "from qiskit.providers.aer.noise.errors.standard_errors import depolarizing_error, thermal_relaxation_error\n",
    "\n",
    "#Import the qv function.\n",
    "import qiskit.ignis.verification.quantum_volume as qv"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Select the Parameters of the QV Run\n",
    "\n",
    "In this example we have 6 qubits Q0,Q1,Q3,Q5,Q7,Q10. We are going to look at subsets up to the full set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:35.715110Z",
     "start_time": "2019-12-10T22:04:35.711242Z"
    }
   },
   "outputs": [],
   "source": [
    "#Qubit list\n",
    "qubit_lists = [[0,1,3],[0,1,3,5],[0,1,3,5,7],[0,1,3,5,7,10]]\n",
    "ntrials = 50"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate QV sequences\n",
    "\n",
    "We generate the quantum volume sequences. We start with a small example (so it doesn't take too long to run).\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:36.552439Z",
     "start_time": "2019-12-10T22:04:35.718718Z"
    },
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "qv_circs, qv_circs_nomeas = qv.qv_circuits(qubit_lists, ntrials)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:36.714695Z",
     "start_time": "2019-12-10T22:04:36.555511Z"
    }
   },
   "outputs": [],
   "source": [
    "#pass the first trial of the nomeas through the transpiler to illustrate the circuit\n",
    "qv_circs_nomeas[0] = qiskit.compiler.transpile(qv_circs_nomeas[0], basis_gates=['u1','u2','u3','cx'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As an example, we print the circuit corresponding to the first QV sequence. Note that the ideal circuits are run on the first n qubits (where n is the number of qubits in the subset)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:36.733124Z",
     "start_time": "2019-12-10T22:04:36.717303Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "          ┌────────────────────────────┐                                    »\n",
      "qr_0: |0>─┤ U3(0.88109,-3.974,0.67573) ├────────────────────────────────────»\n",
      "         ┌┴────────────────────────────┤┌───┐  ┌───────────────────┐   ┌───┐»\n",
      "qr_1: |0>┤ U3(2.6224,-0.97915,-4.0992) ├┤ X ├──┤ U3(pi/2,0,3.6893) ├───┤ X ├»\n",
      "         └─┬──────────────────────────┬┘└─┬─┘┌─┴───────────────────┴──┐└─┬─┘»\n",
      "qr_2: |0>──┤ U3(1.3211,3.3206,1.9445) ├───■──┤ U3(0.76663,pi/2,-pi/2) ├──■──»\n",
      "           └──────────────────────────┘      └────────────────────────┘     »\n",
      " cr_0: 0 ═══════════════════════════════════════════════════════════════════»\n",
      "                                                                            »\n",
      " cr_1: 0 ═══════════════════════════════════════════════════════════════════»\n",
      "                                                                            »\n",
      " cr_2: 0 ═══════════════════════════════════════════════════════════════════»\n",
      "                                                                            »\n",
      "«                                                                   ┌───┐»\n",
      "«qr_0: ─────────────────────────────────────────────────────────────┤ X ├»\n",
      "«        ┌───────────────────┐  ┌───┐ ┌───────────────────────────┐ └─┬─┘»\n",
      "«qr_1: ──┤ U3(pi/2,-pi,pi/2) ├──┤ X ├─┤ U3(2.3258,0.16961,1.9883) ├───■──»\n",
      "«      ┌─┴───────────────────┴─┐└─┬─┘┌┴───────────────────────────┴┐     »\n",
      "«qr_2: ┤ U3(0.069147,pi,-pi/2) ├──■──┤ U3(2.6257,-0.40966,-4.1229) ├─────»\n",
      "«      └───────────────────────┘     └─────────────────────────────┘     »\n",
      "«cr_0: ══════════════════════════════════════════════════════════════════»\n",
      "«                                                                        »\n",
      "«cr_1: ══════════════════════════════════════════════════════════════════»\n",
      "«                                                                        »\n",
      "«cr_2: ══════════════════════════════════════════════════════════════════»\n",
      "«                                                                        »\n",
      "«         ┌──────────────────┐   ┌───┐┌───────────────────┐ ┌───┐»\n",
      "«qr_0: ───┤ U3(pi/2,0,3.648) ├───┤ X ├┤ U3(pi/2,-pi,pi/2) ├─┤ X ├»\n",
      "«      ┌──┴──────────────────┴──┐└─┬─┘├───────────────────┴┐└─┬─┘»\n",
      "«qr_1: ┤ U3(0.67876,pi/2,-pi/2) ├──■──┤ U3(0.39769,0,pi/2) ├──■──»\n",
      "«      └────────────────────────┘     └────────────────────┘     »\n",
      "«qr_2: ──────────────────────────────────────────────────────────»\n",
      "«                                                                »\n",
      "«cr_0: ══════════════════════════════════════════════════════════»\n",
      "«                                                                »\n",
      "«cr_1: ══════════════════════════════════════════════════════════»\n",
      "«                                                                »\n",
      "«cr_2: ══════════════════════════════════════════════════════════»\n",
      "«                                                                »\n",
      "«      ┌───────────────────────────┐ ┌───┐  ┌───────────────────┐  ┌───┐»\n",
      "«qr_0: ┤ U3(1.6714,0.26184,5.8406) ├─┤ X ├──┤ U3(pi/2,0,3.3447) ├──┤ X ├»\n",
      "«      ├───────────────────────────┴┐└─┬─┘  └───────────────────┘  └─┬─┘»\n",
      "«qr_1: ┤ U3(2.0587,-0.39667,5.1684) ├──┼─────────────────────────────┼──»\n",
      "«      └────────────────────────────┘  │  ┌───────────────────────┐  │  »\n",
      "«qr_2: ────────────────────────────────■──┤ U3(0.8297,pi/2,-pi/2) ├──■──»\n",
      "«                                         └───────────────────────┘     »\n",
      "«cr_0: ═════════════════════════════════════════════════════════════════»\n",
      "«                                                                       »\n",
      "«cr_1: ═════════════════════════════════════════════════════════════════»\n",
      "«                                                                       »\n",
      "«cr_2: ═════════════════════════════════════════════════════════════════»\n",
      "«                                                                       »\n",
      "«       ┌───────────────────┐ ┌───┐┌──────────────────────────┐\n",
      "«qr_0: ─┤ U3(pi/2,-pi,pi/2) ├─┤ X ├┤ U3(2.673,3.0342,0.69813) ├\n",
      "«       └───────────────────┘ └─┬─┘└──────────────────────────┘\n",
      "«qr_1: ─────────────────────────┼──────────────────────────────\n",
      "«      ┌─────────────────────┐  │  ┌──────────────────────────┐\n",
      "«qr_2: ┤ U3(0.032719,0,pi/2) ├──■──┤ U3(1.14,-1.5329,-1.9038) ├\n",
      "«      └─────────────────────┘     └──────────────────────────┘\n",
      "«cr_0: ════════════════════════════════════════════════════════\n",
      "«                                                              \n",
      "«cr_1: ════════════════════════════════════════════════════════\n",
      "«                                                              \n",
      "«cr_2: ════════════════════════════════════════════════════════\n",
      "«                                                              \n"
     ]
    }
   ],
   "source": [
    "print(qv_circs_nomeas[0][0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Simulate the ideal circuits"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The quantum volume method requires that we know the ideal output for each circuit, so use the statevector simulator in Aer to get the ideal result."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:40.628601Z",
     "start_time": "2019-12-10T22:04:36.735603Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Simulating trial 0\n",
      "Simulating trial 1\n",
      "Simulating trial 2\n",
      "Simulating trial 3\n",
      "Simulating trial 4\n",
      "Simulating trial 5\n",
      "Simulating trial 6\n",
      "Simulating trial 7\n",
      "Simulating trial 8\n",
      "Simulating trial 9\n",
      "Simulating trial 10\n",
      "Simulating trial 11\n",
      "Simulating trial 12\n",
      "Simulating trial 13\n",
      "Simulating trial 14\n",
      "Simulating trial 15\n",
      "Simulating trial 16\n",
      "Simulating trial 17\n",
      "Simulating trial 18\n",
      "Simulating trial 19\n",
      "Simulating trial 20\n",
      "Simulating trial 21\n",
      "Simulating trial 22\n",
      "Simulating trial 23\n",
      "Simulating trial 24\n",
      "Simulating trial 25\n",
      "Simulating trial 26\n",
      "Simulating trial 27\n",
      "Simulating trial 28\n",
      "Simulating trial 29\n",
      "Simulating trial 30\n",
      "Simulating trial 31\n",
      "Simulating trial 32\n",
      "Simulating trial 33\n",
      "Simulating trial 34\n",
      "Simulating trial 35\n",
      "Simulating trial 36\n",
      "Simulating trial 37\n",
      "Simulating trial 38\n",
      "Simulating trial 39\n",
      "Simulating trial 40\n",
      "Simulating trial 41\n",
      "Simulating trial 42\n",
      "Simulating trial 43\n",
      "Simulating trial 44\n",
      "Simulating trial 45\n",
      "Simulating trial 46\n",
      "Simulating trial 47\n",
      "Simulating trial 48\n",
      "Simulating trial 49\n"
     ]
    }
   ],
   "source": [
    "#The Unitary is an identity (with a global phase)\n",
    "backend = qiskit.Aer.get_backend('statevector_simulator')\n",
    "ideal_results = []\n",
    "for trial in range(ntrials):\n",
    "    print('Simulating trial %d'%trial)\n",
    "    ideal_results.append(qiskit.execute(qv_circs_nomeas[trial], backend=backend, optimization_level=0).result())\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, load the ideal results into a quantum volume fitter:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:40.677849Z",
     "start_time": "2019-12-10T22:04:40.630828Z"
    }
   },
   "outputs": [],
   "source": [
    "qv_fitter = qv.QVFitter(qubit_lists=qubit_lists)\n",
    "qv_fitter.add_statevectors(ideal_results)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Define the noise model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We define a noise model for the simulator. To simulate decay, we add depolarizing error probabilities to the CNOT and U gates."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:40.685615Z",
     "start_time": "2019-12-10T22:04:40.681481Z"
    }
   },
   "outputs": [],
   "source": [
    "noise_model = NoiseModel()\n",
    "p1Q = 0.002\n",
    "p2Q = 0.02\n",
    "noise_model.add_all_qubit_quantum_error(depolarizing_error(p1Q, 1), 'u2')\n",
    "noise_model.add_all_qubit_quantum_error(depolarizing_error(2*p1Q, 1), 'u3')\n",
    "noise_model.add_all_qubit_quantum_error(depolarizing_error(p2Q, 2), 'cx')\n",
    "#noise_model = None"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Execute on Aer simulator\n",
    "\n",
    "We can execute the QV sequences either using a Qiskit Aer Simulator (with some noise model) or using an IBMQ provider, \n",
    "and obtain a list of results, `result_list`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:56.486881Z",
     "start_time": "2019-12-10T22:04:40.688577Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Running trial 0\n",
      "Running trial 1\n",
      "Running trial 2\n",
      "Running trial 3\n",
      "Running trial 4\n",
      "Running trial 5\n",
      "Running trial 6\n",
      "Running trial 7\n",
      "Running trial 8\n",
      "Running trial 9\n",
      "Running trial 10\n",
      "Running trial 11\n",
      "Running trial 12\n",
      "Running trial 13\n",
      "Running trial 14\n",
      "Running trial 15\n",
      "Running trial 16\n",
      "Running trial 17\n",
      "Running trial 18\n",
      "Running trial 19\n",
      "Running trial 20\n",
      "Running trial 21\n",
      "Running trial 22\n",
      "Running trial 23\n",
      "Running trial 24\n",
      "Running trial 25\n",
      "Running trial 26\n",
      "Running trial 27\n",
      "Running trial 28\n",
      "Running trial 29\n",
      "Running trial 30\n",
      "Running trial 31\n",
      "Running trial 32\n",
      "Running trial 33\n",
      "Running trial 34\n",
      "Running trial 35\n",
      "Running trial 36\n",
      "Running trial 37\n",
      "Running trial 38\n",
      "Running trial 39\n",
      "Running trial 40\n",
      "Running trial 41\n",
      "Running trial 42\n",
      "Running trial 43\n",
      "Running trial 44\n",
      "Running trial 45\n",
      "Running trial 46\n",
      "Running trial 47\n",
      "Running trial 48\n",
      "Running trial 49\n"
     ]
    }
   ],
   "source": [
    "backend = qiskit.Aer.get_backend('qasm_simulator')\n",
    "basis_gates = ['u1','u2','u3','cx'] # use U,CX for now\n",
    "shots = 1024\n",
    "exp_results = []\n",
    "for trial in range(ntrials):\n",
    "    print('Running trial %d'%trial)\n",
    "    exp_results.append(qiskit.execute(qv_circs[trial], basis_gates=basis_gates, backend=backend, noise_model=noise_model, backend_options={'max_parallel_experiments': 0}).result())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load the experimental data into the fitter. The data will keep accumulating if this is re-run (unless the fitter is re-instantiated)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:56.569352Z",
     "start_time": "2019-12-10T22:04:56.489254Z"
    }
   },
   "outputs": [],
   "source": [
    "qv_fitter.add_data(exp_results)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:56.774174Z",
     "start_time": "2019-12-10T22:04:56.571634Z"
    },
    "tags": [
     "nbsphinx-thumbnail"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAooAAAH0CAYAAAC6tAygAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXhU5dnH8e+dsAQJgoKCQBWsooJoEJRqrcQKIq5VapHWBVEpuKK+2lq14lJbq3XfCi64132tFkWJWHeoqQpIrYiKLAU0QtiE5H7/eE5gGGYmk2Qmk4Tf57rONZlznnPOPZNJcudZzd0REREREYmXl+sARERERKRhUqIoIiIiIgkpURQRERGRhJQoioiIiEhCShRFREREJCEliiIiIiKSkBJFEWlQzGygmbmZHZ/rWDLBzPYysylmVha9rktyHZNkj5k1i77Pd6VZ/tSo/P7Zjk2kNpQoSpNkZlua2aVm9i8zW25mK81sppn92cy2zXV8yZhZkZmNM7NuuY4lETPb2sxWm1lpNeUOjP74ja+v2BoiM2sOPAl0By4GTgCeyWlQWRIlxOPMbPss36eXmf3NzBaa2Roz+8rMnjKzbWpwjU5mdm30O2Fl9DviX2Z2sZkVZjP+NOOrl/dSJB1KFKXJMbMewL+By4E5wG+BscA70eMMM+ufuwhTKgIuA7rlOI6E3P0bQqKzp5n1SVH05OjxnuxH1aDtTPheXu/ut7n7g+7+cY5jypa9CJ/drCU3ZnYoMB3oCdwEjAFuB5oBbdK8xv7ADOBswu+Ecwm/I+YAVwIfmNmOGQ8+uXuBVsCbMfuy/l6KpKtZrgMQySQz2wJ4HugCHOHuf485PN7MbgcmA8+ZWW93/18u4mzk7gaGEZLBD+IPmlkbYCgw093fqefYGppO0eM3mbyomRnQ2t3LM3ndhszMOgEPEX5+j3b3tbW4RmfCPzp5wL7u/q+Yw7eZ2RHAU4TfD33dfU0GQk/J3SuAimzfR6S2VKMoTc0pQA/ghrgkEQB3nwb8DtgWuKBqv5mNiJpKi+PPMbMSM5sbt+9gM3vUzOaY2aqo/9nLZjYg2flm1tnMHjGzb81shZlNimo/q8qNI9QuAEyJ4nEzm1h1PHreLcE95ppZSdw+N7OJZvZTM3s7amKbZ2a/iY5vZWZ3m9n/omMvRH9Iq/Mq8AXwKzNrmeD4ccAWxNUmmtm2ZnZHFMP3Zvalmd1iZltXd8NU/bjM7J9m9t+4ffPMbLKZ9TGz18ysPHqdfzazfDNrZWY3mNn86PtXYma7JLh2gZldEjVRro6+d8+Z2Z5pxPxPwnsF8EDM97NrdLzQzP4UfYbWRE2pE83sB3HXqeqzeYKZnWVms4A1hNrxZPfeyZL0hzSzq2LjiPY9aGbrou/Rg2b2TfQZfSXN13oVMCF6+kbMa70rpkytv/+R04F2wAXuvtbMtrDQtF8TvwHaAxfGJYkAuPvzwC1AL2BE7OuLf89ijs0zs8mJbmZmg83s3egztiD6zG0RV2ajz3Z172X02b3CzGZHP7ffmtlHZvanGr4XImlRjaI0NT+PHiekKDMRuJFQ63VBinKpjAC2Bu4H5hFqME8FXjWzA939jbjyrYGphKau3xH6rJ0DPGtmu0e1Ck8B2wGjgKuBWdG5n9UyRoA+wBHA+CjWXwB/MrPVwEnAXGAcsBOhKe5+YGCqC7p7ZZS8XgYcCTweV+RkYC3wQNUOM2sHvEV43XcDpUBf4Azgp2bWPwu1Y9sDLwMPA48BhxC+32sJTXvNgD8S/mk4H3g6+l5URjG3iM7vT3hfbga2Ak4D3jKz/d19kxrVGFcABxKaNe8gvH6Ab6IE5xXgR1Fs1xH+wRkDHGxm/dx9ftz1zo/ufzewkJCsZ5IRXu8i4PdAZ+BMYKqZ/cjdZ6U493FC7ekphObb/0T7/wsZ+/4fCnwLbGtmjwK9gcooIT/P3aen8RqHAquJ+WwmMIHQHD0U+Gsa10xmb8I/TeOB+4CDCMl9LzMb7O6e5LyU7yVwJ3Ai4ffY20BzQheHn9YhVpHk3F2btiazAUuBZWmU+whwoDB6PiJ6XpygbAkwN25f6wTlOgJLgBcTnO+EWozY/RdE+wfH7EsVx7joWLcEx+YCJXH7HKgE+sfsawEsiPbfHFf++uicXdJ4/3YgNJfFv9Zdoms8Fbf/mmj/qLj950T7L4vZNzDad3zMvlOjffsniOWfwH/j9s2Lyh8dt//f0Wt/ErCY/edF5Q+K+/5UAgPjrtEuuv7kNN6nTV5LtH9MtP/quP1HRfvvTXCNJUCHNH8OdorOuSTBsauiY11j9j0Y7Xs87n3ZJ3oPXkjjnqm+R2l//1Ncf3m0rSTUVh8D/B9QBpQDu1Zz/lbRvf5VTTmL7rEw1XsW91mbHPO8WVTWgcPjyt4a7f95qvetmvdyGfBcOp8DbdoysanpWZqaLYHv0ihXVSatDvDx3H1F1ddRE2J7QuL0LqEGKl4loUYq1mvR4861iSFNb7v7u1VP3P174D3CH8P4eKpqQauNx92/IDSrHhzXXF01iOXuuFOOJtSCxe+/g9B/7+jq7lkLX7r703H7/kl47be4e2yNTqLXfjxh0EOpmXWo2giJwKvAgCRN7+k4GlhHSKDWc/dngY+Bn5mZxZ0z0d2X1PJ+6bom9n1x9/eAKcBgM2tVh+vW6fsfvReF0faYu49096fc/TpCK0Jr4NJqYtgyekz5+yF6/cuo5e+GGDPc/YW4fVXf77p83r8DeptZrzpcQyRtShSlqVnGhj8IqWxJSN5q9YfXzH5oYYqObwm1HEuAxYTmsa0SnDLf3VfH7VsaPbavTQxpmpNg37fR4+dJ9qcbz91APqEJGzPLJzSJzQf+EVe2G/CJhyb29aLE9VMgG6NM6/radwV2J3xf47cTCQljuv3r4nUH5rl7oqRlBqHWMv5z9J8EZTMtUfPyTMJrrcsI3G7U4fsfJW9VPz8T445NJnzmiquJYVn02DZVoSgpbUNogq+LTd5Ld/+KUPtZl8/7OUAH4GMz+6+ZTTCzIxL8YyGSEeqjKE3Nx8ABZraTu/83UYGoM/kuwBe+YeRksv5CEPdzYmGetamEWowbCc3YywmJ50Uk7iuUalRjur/g044xnfvG/9GuRTzPEGqDTib09TuE0MfyjwmuXdc/Yhl97SmOxcaZR+hLl6ofa21HM9fm/VhZg7K1eb+SyUQCkolrzCM0qS9McGwBYcqcpNz9WzP7GtjNzAoS/ONWZRfCYKzY3x+1eT9TnVNr7v6Umb1O+Kd0ADCI0FRdYmYHey1Gg4ukohpFaWqejB5PTVHmREJfvQdj9lX9wU9UQ9Q97vlBhI7+57r7OHd/0t1fjmo2Wtci5lip/rgkjNHMCggJWr3yMHXIQ8DOZvZjNjQ735ug+Bxg16jWcb1oUMfOJK79i1WT70+mfApsA7zq7pOTbLWdPuUzoKuZJar97knod/dtgmPpSvV+parN2i3JvnXAV9XcM9Vnt67ffwhdJgA2GXkc7UtnqqungAJCt4Jkqn53VPv7wcxaEwZDJbJJ4hqNaC+k+tebMsl096Xu/oC7n0r4/P+FUKN6eDXXFakxJYrS1NxFaKI718wOiT9oZnsRar8WALfFHKpq1hsYV344ISmMVVUbZXFlDyZx/8SaqBr5megPfMIYCSM0c/WzXNXn7ALC6Oqp7v5pgnLPEEZynhy3fzThtcb3JYyX7PtzAsn/UNfV/YTR7OckOmhmHetw7WcINVEXxl3zCMJo3mfi+lDWiLt/S+gOcVDc9XcmfJ+S+U1sE6aZ7UMYuf2yu1dXo5nqs1vX7z9sGKk8OnanmR1NGEj2YhrXuIaQ9F1jZkXxBy1M6H0O8CFhNHqVZD9755G8trSXmcUnbr+JHqtbnSfhe2lhecCNms6jz0lpovIimaCmZ2lS3H2lmR1J6CP3dzN7kjDqeB1hBOcJhJqaI919Ucx5s6O50H4d/aEsJayScjShCSp2vrZ/Epq//mJhTsN5UdkTCM3QvevwEt4nNGFfbGZbASuAz6MBKZOBT4ArosEznwP7E6ZYyfYgh4Tc/d9mNp0wWheSr8TyJ6LpRsysH2H08V6EKUBmEmpEUt1nhoV5Is+IaqU+jM4/kvRqo2rjekJicIOZDSR8jpYT+uodFH09qJbXvptQs32xhVVA3iBMj3M64Z+Yi+sUeXArMM7MXgSeIyS9owmf0b0TlK8k1O69ZGYvsGF6nBXEJbRJvEc00trCcnorgM/c/X3q+P0HcPd/mNljwC+i+F4k9H08C/iaMB1Rddf42syOIrwf75rZA1HczQgJ8VDCz/sRcU3Tk6L9V1tYAvQL4CdAP5J3P/gQ+JuZ/ZVQg3wQYaT2q8AT1YSa8L0k/Mx/aWbPEX5H/Y9QQzwmimOTuWNF6izXw661acvGRhiscilh5ZByNkxX8THQLsk5nQjTgyyLznmJ0OxWwqbT4+xBSEarBrOUEP5wTCT6Jz+m7CbnR/u7RTGNi9t/EuGP5/fR8Ykxx3pE911JaJ58jJAAzCXx9DgTE9x3kxij/cXROSNq+F5XTfWyDNgiRbltCXPAfU2Yy3AeYXLjrePKJZtSpjOha8Gy6D1/kdCfLNn0OJtMX0OSaU5IMp0MIYEYC0wj/LFeQWiSfoC4aXOSvOaEryU6Vkio4fo8+l4vIsy3t32616jm3s0J8zMuJAwEmQYclug9IDSzriPUzD1ESDpWEpKaPjW450jCPzNVn927avr9T+M1XUSo4VtDSJQmAl1q+N5sF703s4BVbPj9MAlomeScXQnzTFb97D0SXSfZ9Dh3AYMJSd+q6PtwE3FTa5FkKpxE7yXQkpB0v08YDLc6+vzcBfywJu+BNm3pbuaelf62Ig2KmTUjJIE/A8539+tzHJJIg2FmDwLHuftm2coU9RWdTJigfpi7P5XjkEQaDPVRlM2Cu68jrE/8IqHJeEyOQxKRBsLdlxFq/z4CHon6KooI6qMomxEPc7Ydlus4RKTh8TAAaK9cxyHS0KhGUUREREQSUh9FEREREUlINYoiIiIikpASRRERERFJSImiiGx2zGyimTX5fjdm9o6ZfVKH8/9kZm5mnTIZl4g0HkoURURSqEoqk2w/T1C+pZldYWafm9kaM/vMzC6J1jVOdZ9uKe6zyZa9VywisoGmxxERSc8JCfa9l2Dfo4QlDe8B3gb2Ba4krP4yIsX1Fye4xzGEZSSvJqwiUlMH1OIcEZH1lCiKiKTB3R+srkw0UfNRwPXufn60+y4zKwPOM7Px7v5WkuuvICylF3u9nQiJ4ivuXpJOnNFa2C3cfVU0d6iISK2p6VlEcsrMdjWz281shpktN7OVZjbdzE5LUHZc1PS6i5ldbWbzoubdfydaTcPMCszsWjObb2arzOw9Mzu4lnGamW1pZql+b/4yerwxbn/V8+Nrc+8UMY2O3o8DzOxyM/ucsAbyUdHxTfoomtl+Zna/mX0avdfLzGyqmR2e5j23MbNbzGyOma02syVmNs3MzsnkaxORhkE1iiKSa8WEJtIXgM+B1sCxwHgz6+Duf0xwzn3AWuA6oAUwFnjGzHq4+9yYco8Q1vd+HpgE/BB4KrpPTX0HtAG+N7OpwCXu/m5cmb2Br939q9id7v6Vmc2PjmfDzYR//O8EyoHPUpQ9lvA+/A34EtiG0CT+vJkNTWOd42eAftG9PiJ8v3oSvo831foViEiDpERRRHLtAXe/M3aHmd0AvAb81syuc/e1cecsAY7waMUAM5tC6C/4a+CiaN/BhCTxPncfEXPtqcDTNYhvIXADMB1YAexJSEzfMLND3X1yTNnOwMwk1/ka6FqD+9ZEPrC3u69Oo+wlUTP3emZ2M/AhcAkhkU7IzLYF9gNucPfz6hCviDQSShRFJKdikxYzKyDUUBnwMjAA2JVQcxXrJo9ZVsrd3zez5cDOMWV+Fj1eG3e/Z8xsNrBLmvH9Nm7XM2b2MFAK3BF3zy0ITb+JrI6OZ8NtaSaJ8e/3FkArwvv9OnCSmbV092SvYQWwDtjPzLZ39y/rGLeINHDqoygiOWVmhWZ2nZl9Cawi1BYuBv4QFdkqwWlzEuz7Bmgf83xHoBL4T4KytRlBvJ67fwo8BuxkZj1iDq0EWiY5rSA6ng2JXmNCZradmd1jZosJiV/V+z2CkDC2TXZulGT+H7AXMNfMPjKzm8xsQF2CF5GGS4miiOTaw8B5wIvAr4AhwCBCcy8k/j1VkeRaluTrVOVqa2702CFm33ygS5LyXQjNz9mQVgIajYh+FRgO3A38AhhMeL+fiIql/Lvg7jcRkvAxhObq44ASM7uvVpGLSIOmRFFEcsbM2gGHE/opjnb3h939H1G/v7pO7fIZ4XdcjwTHdq3jtWFDk/OimH3vA13M7AexBaPnnYFpGbhvXfQDdgOucPffuvvj7v5y9H6nnBA8lrvPc/e/uvuvCAnwU8CJZtY7O2GLSK4oURSRXKqqGdyohs/MtgNOreO1n40eL4i79s9Is3+imbWO+k3G7+9DGD08y91jRxg/Ej2OjTul6vlD6dw3i5K933sBh1V3cvR+tIrd5+7r2NCHdOtMBCkiDYcGs4hIzrj7cjN7GTjezFYRauR2IIxe/pyN+xzW9NqTzOx5wgCNrYF/EKaF+TXwMbB7GpfZGXjJzJ4BPmXDqOeRhKRrVNw9/25mLxAm127LhpVZTgEedPd/1vb1ZMiHhP6Ml0S1uZ8SahhPi47tVc35vYF/mNlTwAygjPA+jo6u+06W4haRHFGiKCK5djzwJ+AI4CRC8nIxYZ7Ee+t47WHAVYS+j4MICeJQQh+9dBLFhcBk4MDoGq2ABYRl+v7o7p8kOOdYwjQzxxOW5Psa+D3hNeaUu38fTUx+LSHZbUWoDRwO7E/1ieIc4H7CnInHEOaw/Bq4HbgmxWhpEWmkLGaGCRERERGR9dRHUUREREQSUqIoIiIiIgkpURQRERGRhJQoioiIiEhCm/2o5w4dOni3bt2yfp8VK1bQunXrrN9HpLb0GZWGTp9Raejq4zM6ffr0Je6+TVZvEmOzTxS7devGtGnZXyyhpKSE4uLirN9HpLb0GZWGTp9Raejq4zNqZl9k9QZx1PQsIiIiIgkpURQRERGRhJQoioiIiEhCm30fRREREam7tWvXMm/ePFavXp3rUHKmbdu2zJo1KyPXKigooGvXrjRv3jwj16stJYoiIiJSZ/PmzaNNmzZ069YNM8t1ODmxfPly2rRpU+fruDtLly5l3rx5dO/ePQOR1Z6ankVERKTOVq9eTfv27TfbJDGTzIz27ds3iNpZJYoiIiKSEUoSM6ehvJdKFEVEREQkISWKIiIi0ugtXbqUoqIiioqK6NSpE126dKGoqIh27drRs2fPjN+vpKSEww8/vEbnFBcXJ1zkY+LEiZx55pmZCi2jlCiKiIhIo9e+fXtKS0spLS1l9OjRnHvuueuf5+VVn+6sW7euHqJsfJQoioiISJNWUVHBaaedRq9evTj44INZtWoVEGr4fve73zFgwABuuukmFi9ezNChQ9l7773Ze++9efPNNwF4/fXX19dW9unTh+XLlwNQXl7Oz3/+c3bddVd+9atf4e4AvPrqq/Tp04fevXszcuRI1qxZs0lM9957Lz169GDAgAHr79MQKVEUERGRjDOzpNv48ePXlxs/fnzKspnw6aefcsYZZzBjxgzatWvHk08+uf5YWVkZr7/+Oueffz7nnHMO5557Lu+//z5PPvkkp556KgDXXXcdt912G6Wlpbzxxhu0atUKgA8++IAbb7yRmTNnMmfOHN555x1Wr17NiBEjePTRR/noo49Yt24dd9xxx0bxLFiwgMsuu4w333yTV155hZkzZ2bkdWaDEkURERFp0rp3705RUREAffv2Ze7cueuPDRs2bP3XkydP5swzz6SoqIgjjzySZcuWsXz5cn784x9z3nnncfPNN1NWVkazZmEa6n322YeuXbuSl5dHUVERX3zxBbNnz6Z79+706NEDgJNOOompU6duFM+7775LcXEx22yzDS1atNgohoZGE26LiEiDV1wMZWVFlJbmOhJJV1UzbHVGjRrFqFGjshpLy5Yt13+dn5+/vukZoHXr1uu/rqys5O23315fY1jlt7/9LYcddhgvvvgiP/rRj5g8eXLC61ZUVKT9uhvK9DfVUY2iiIiICHDwwQdz6623rn9eGv1n8tlnn9G7d29+85vf0K9fPz755JOk19h1112ZO3cu//3vfwF44IEHGDBgwEZl+vfvT0lJCUuXLmXt2rU8/vjjWXg1maFEUURERAS4+eabmTZtGnvssQc9e/bkzjvvBODGG29k9913Z88996RVq1YMGTIk6TUKCgq49957OfbYY+nduzd5eXmMHj16ozLbbbcd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RERE6tmQIdC/P+RFWUhhYXg+ZEhmrn/AAQfwt7/9jYqKChYsWMCUKVMA2GWXXVi8ePH6RHHt2rXMmDEDgOXLl7Pddtuxdu1aHnroocwE0gSoRlFERETqVX4+TJoU+h2Wl4eaxCFDwv5MOProo3nttdfo3bs3PXr0YMCAAQC0aNGCJ554grPPPpvvvvuOdevWMXbsWHr16sWVV15J//792WGHHejduzfLly/PTDCNnBJFERERqXf5+aE/Yvv2mWtuLo/ass2MW2+9NWGZoqIipk6dusn+MWPGMGbMmE32jxs3LjPBNVJKFEVERCQn1EVNrK0AACAASURBVA2w4VMfRRERERFJSImiiIiIZIS75zqEJqOhvJdKFEVEpEGrWupt0aKWWuqtASsoKGDp0qUNJsFpzNydpUuXUlBQkOtQ1EdRREQartil3iorCxg+PEyjMmlS5kbISmZ07dqVefPmsXjx4lyHkhMLF4J7JXl5mamDKygooGvXrhm5Vl0oURQRkQbHHZYtg4cegjffrFrFwygvD89vugkOPRS23DJsrVtDgvmVpR41b96c7t275zqMnBkzBsrKyigtbZfrUDJKiaKIiNSrdetC7cvXX6feVqxIfP7q1XD++WGrkpe3IWlMtbVtm/p4YeGGSaBFRImiiIhk0LJl1SeAixZtus5vixbQuTN06RImYT7ssPD1woVw222watWGsq1awYUXwi67hPsl2775Bj7/fMPzZIlnvDZtqk8oq0s827RR07g0DUoURUSkWunUAs6fv/HavVW23jokfV26wJ57bvg6dmvfPnFNXkUFfPABTJkClZVOYaHRvz9cemnNE7GKCli+fNOE8rvvUiecy5bBV19t+DrdBTtat06/JjNZuTZtoHnzmr1OkUxSoigispmrbS1g8+YbagH33DP0GYxPADt3DjWAtRW71NuSJauZMKFVrZd6y8+Hdu3CVheVlSEhTpRQVpd0Lly4cZl0Bgi3alXzJvREZVq0qNvrls2TEkURkSaqoiK9voCJagG32mpDsrfHHolrATt0qJ/+fFVLveXnr+Hww+uQdWZIbH/IunAPzeHJkspUSeecORuXSWfKoJYta9dvM75cy5YaOLQ5UaIoItIILV9efQK4cOGmtYDNmm2oBezdGw45JHEt4BZb5OZ1bU7MwuCZwsLwnteWe+jDmaomM1nS+dVXMGPGhjJr11Z/v+bN6zZgqGrbYgslnI2BEkURkQakoiI081aXBCbqJ9eu3YZkb/fdE9cCbrONRvU2NWYh6dpiC+jUqfbXcYc1a2qXcC5YALNnbyizZk3198vPz8xI9dat9ZnOJiWKIiL1pLw8vVrA+GbEZs1gu+1CoterFxx8cOIkULWAUhdmUFAQtm23rdu11qxJPHCouqRz8WL47LMNz1euTC/udEeqpypTWFj7kepVqwctWRJWD6ptP9qGKCeJopmdDlwAbAfMAMa6+xspyv8SuBDoASwDJgP/5+4Lo+MjgHsTnNrK3VdnNnoRkY1VVMD//ld9Erhs2abntm27IdHr2TNxArjttqoxkcalZcuwdehQt+usXVt9wpko6fz2W/jiiw3PE/XDTaSwsOb9Nlu3DtM1NdXVg+o9UTSzYcBNwOnAP6PHl8ysp7t/maD8j4EHgP8DngE6ArcDDwEHxRRdCfww9lwliSJSVytWVJ8ALliwaS1gfv6GWsDddoOBAxMnga1b5+Z1iTQGzZuH6ZW23rpu10k2NVI6SWfVP3lVUyOlHqkeVg9691146SU4/PC6xd0Q5KJG8TxgortPiJ6fZWaHAGOAixKU3xeY5+43RM8/N7NbgFviynlVDaOISHVS1QLOn7/h6+++2/Tctm03DAg56KDktYBNoTZBpCnI5NRIK1ZsnEzecQc88MDGCeSKFVBaqkSxxsysBdAXuC7u0MvAfklOexO42syOAF4A2gPHAS/GlWtlZl8A+UApcKm7f5Cp2EWk8UinFnDhwjCJdKzYWsBdd02cBHbuHJqnRGTzk5cX+kO2abNh35Il8NRTGzdvt24d5v5sCuq7RrEDIZFbFLd/ETAw0Qnu/raZDSc0NbcixPwKcFJMsdnASODfQBvgHOBNM9vT3T+Nv6aZjQJGAXTs2JGSkpI6vKTqlZUVUVFRkfX7iNRWY/mMVlZCWVkLFi9uwZIlLWO28Hzx4vB8xYpNf7W1br2ODh3W0KHDGnr1+p4BA9asf77NNt/TocMa2rX7PmUt4Pz5YZP611g+o7L5adUKevTYg9LSraishIKCCnr0WEarVh/SFD6u5ulMC5+pm5l1Br4GDogdvGJmlwHD3X3XBOf0JCSGNwKTCANgrgVK3f3EJPepqlWc4u5np4qpX79+Pm3atFq+oupVVEDRlnNYtrYltz3VpUmNhJKmo7gYysrKKC2tY7tMHaxcmV5fwPhawLy8DbWAqTbVAjZuDeEzKpJMRUXV6kGr6rR6UDrMbLq798vO1TdV3zWKS4AKIH6mp23ZtJaxykXAe+5+bfT8QzNbAbxhZhe7+1fxJ7h7hZlNA3bOUNy1UlEBgwfDzJU7UElekxsJJZKOysow5UV1SWBZ2abntmmzIdE78MDECWDHjvp5EpHcamirB2VSvSaK7v69mU0HBgGPxxwaBDyZ5LQtCMllrKrnCed0NzMD9iA0RefMSy/BO+9AJeGvWHk5vPEGjBwZ5kLLz69+y8tLr1w2ztGM+ZuHusz/tWpVerWA8as95OWFiYG7dIGddw61RYmSwNh+QCIiUv9yMer5euABM3uPMFBlNNAZuBPAzO4HiGlWfh6YYGZj2ND0fCPwr6rpdKKm63eAT4EtgbMJieKYenpNCX3wwaaThX7/Pdx/f27iqSmzhpnA5voemYgrL69hJOLra73j5v966aUwD1l1SeC33256zcLCDYnegAHJawGbabp/EZEGr95/Vbv7o2bWHriEkPR9DBzq7l9ERbaPKz/RzNoAZwJ/Ab4DphAm4K7SDhhPaNL+DviA0A/yvWy+lur06RNGPsWPhLr//vDHuaKi+q2yMr1ytS2fi3usXQurV2f2HvXY1TZjqks26yOBnTcPXn+9aj3gMP/Xa6+Fztnx8wLm5YUEr0sX+OEP4YADEieBW26Zi3dTRESyISf/07v77YRJsxMdK06wL9G8ibHHzwXOzVR8mTJkSKidmfJqBZXkUVho9O8PRx2VftOepMe9cSTJ9XGPNWvSL//tt5sODnGH/faDY4/dOAHs1Em1gCIimxv92s+i/PwwcKVoyy/CqOdHNOo5W2KbySV9L7wAw4dvXOtdWBiWo2oKE8WKiEjdaPXQLMvPh/bNl/GDFgs4/HAlMtKwVNV6h3WEncLC8HzIkFxHJiIiDYESRZHNWFWtd8+e0KnTah55RNM3iYjIBmp6FtnM5ec33fm/RESkblSjKCIiIiIJKVEUERERkYSUKIqIiIhIQkoURURERCQhJYoiIiIikpASRRERERFJSImiiIiIiCSkRFFEREREElKiKCIiIiIJKVEUERERkYSUKIqIiIhIQkoURURERCQhJYoiIiIikpASRRERERFJSImiiIiIiCSkRFFEREREEkorUTSzttkOREREREQalnRrFOeb2d1mtndWoxERERGRBiPdRPFaYBDwjpl9YGajzKwwi3GJiIisV1ICN95YmuswRDY7aSWK7j4O6AYcDcwHbifUMt5hZkVZi05EREREcibtwSzuXunuz7n7YcAPgZuAI4HpZvaumY0ws5bZClRERERE6ldtRz0vA74BygED2gJ3A/81s/0zFJuIiIiI5FCNEkUz+7GZ3Q98DVwOvAbs6e67ArsBc4C/ZjxKEREREal3zdIpZGZnAb8mJIOzgAuA+919eVUZd/+PmV0GvJqNQEVERESkfqWVKALXAc8AZ7j76ynKfQpcUeeoRERERCTn0k0Ut3f3RdUVcveqJmkRERERaeTS7aP4tpntmeiAme1uZnNqclMzO93MPjez1WY23cx+Uk35X5pZqZmtNLOFZvagmXWKKzPUzGaa2Zro8eiaxCQiIiIiG0s3UewGJJv6pgDYId0bmtkwwtQ6VwN9gLeAl8xs+yTlfww8ANwH9AJ+BvQEHoopsy/waLSvKHp83Mz6pxuXiIiIiGysJqOePcn+fkBZDa5zHjDR3Se4+yx3PwtYAIxJUn5fYJ673+Dun7v7O8AtQGwSOBaY4u5/iK75B6Ak2i8iIiKSVU119aCkiaKZnWtmX5rZl4Qk8fmq5zHbYuA24B/p3MzMWgB9gZfjDr0M7JfktDeB7czsCAs6AMcBL8aU2TfBNSeluKaIiIiIVCPVYJY5bJjq5iRgGrA4rswaYCZwV5r36wDkA/EDYxYBAxOd4O5vm9lwQnNyqyjmV6KYqnRKcs1OJGBmo4BRAB07dqSkpCTN8Gtn3bpC3D3r9xGprbKyIioqKvQZlQatvLxcn1Fp0JriZzRpoujuzwLPApgZwBXu/nmG7hvfjG0J9hHduydwM3AloZZwO+BawsTeJ9bmmu4+HhgP0K9fPy8uLq5Z9DXUrFkp69atI9v3Eamtdu2grKxMn1Fp0EpKSvQZlQatKX5G05oex91PztD9lgAVbFrTty2b1ghWuQh4z92vjZ5/aGYrgDfM7GJ3/wpYWMNrioiIiEg1kiaKZvZ74C53nx99nYq7+5XV3czdvzez6cAg4PGYQ4OAJ5OctgUhuYxV9dyix7eja1wbU2YQYUS1iIiIiNRCqhrFcYRBKvOjr1NxQtNwOq4HHjCz9wgDVUYDnYE7AaK1pHH3qmbl54EJZjaGDU3PNwL/cvcvozI3AVPN7CLgaeBo4EBg/zRjyp6KCvZdO5Ud186EFxbCkCGQn5/rqERERESqlaqPYl6ir+vK3R81s/bAJYSk72PgUHf/IiqyfVz5iWbWBjgT+AvwHTAFuDCmzFtmdhxwFWFlmM+AYe7+bqbirpWKChg8mEtXvkUBq2H4Q9C/P0yapGRRREREGrx0l/DLKHe/Hbg9ybHiBPtuIcydmOqaTwBPZCK+jHnpJXj3XbZgVXheXg7vvhv2H354bmMTERERqUbGagolgQ8+gBUrNt5XXg5vv52beERERERqINVglkqSr8YSz909J7WTDVqfPtC6dUgOY113HSxcCGecAXvtlZvYRGKUlEBJSSlQnONIRESkIUmV3F1B+omiJDJkSOiTOGUKXlmJFRZCz57Quzc88gjcc084fvrp8ItfQEFBriMWERERWS/VYJZx9RhH05SfHwauFBWxeskSWk2YsGHU83XXwf33w+23w0knwXnnwciRMHo07LhjriMXERERUR/FrMvPh/btWdOxYxjAUjXauV07OPtsmDULJk+GAQPg+uthp53gsMPg738Po6ZFREREcqReJ9yWBMzgoIPCNm8eTJgA48eHpLJ791DDOHIkdOiQ60hFRERkM5OLCbclma5d4fLL4eKL4ZlnQrP0b34Dv/996MN4+umhT6NZ9dcSERERqaOkTc/unufu78V8nWrT7NGZ1KJFSAxLSuDjj+HUU0PiuO++0Lcv3H03rFyZ6yhFRESkiVMfxYauVy+49Vb4+utQw7h2bUgcu3SBc8+F//wn1xGKiIhIE1WjRNHMDjSz35nZbdHjgdkKTOK0aQNjxsCHH8LUqXDIISGB3GUXOPjgUOO4bl2uoxQREZEmJK1E0cy2NrNXgcmE+RV/ET1ONrNXzWzrLMYosczgJz8J8zB+9RVceWUYOX300WHwy1VXhcm8RUREROoo3RrFm4G9gROAVu6+DdAKOBHoB9yUnfAkpU6d4JJL4PPP4emnYbfd4NJLYfvtYfhweOMNcM2ZLiIiIrWTbqJ4BHCRuz/s7msB3H2tuz8EXAIcma0AJQ3NmsHPfgYvvwyffBKWBnzpJTjgANhjD7jjDli+PNdRioiISCOTbqJYAXya5Njs6Lg0BLvsAjfcEAa/3HUXNG8eptXp0gXOPBNmzMh1hCIiItJIpJsoPgsMS3LsOOCZzIQjGdO6NZxyCkyfDm+/HWocJ0yA3XeH4mJ47LEwglpEpDEoLqZo7NhcRyGy2UmaKJrZT6s24HlgkJn93cxGmNmQ6PFF4CDgufoKWGrIDH70o7Cu9Lx5cM018MUXMGxY6Mt42WVhv4iIiEicVDWKk4FXosfHga7AEOAe4O/R4yHAD4AnsxumZMQ228CFF8J//wsvvAB77RVGTXfrBkOHwquvavCLiIiIrJdqCT/NkdhU5efDYYeFbc4c+Otfw2ovTz0V+jiOGQMnnQTt2uU6UqkvxcUUlZVBaWmuIxERkQYk1RJ+r9dkq8+gJYN23DE0R8+bB/fdF5LDsWPD4JdRo5Q4iIiIbMa0hJ8EBQVw4onwzjswbVqYh/HBB6FPH9hvP3joIVizJtdRioiISD1KO1E0s93N7AYze9HMXovbXs1mkFLP+vYNU+t8/TVcfz0sWQLHHw9du8JFF8HcubmOUEREROpBukv49QemEQazDAa2AnYEioGdAMtSfJJLW20F554bJvF++WXYf3/4859Dc/URR8A//gGVlbmOUkRERLIk3RrFq4GngF6EpPAUd+8GDATygauyEp00DHl5MGhQWCZw7lz43e/gvfdgyBDYeWe47jpYujTXUYqIiEiGpZso7gE8CFTNnZIP4O6vEZLEP2Y+NGmQfvADuOoq+OoreOSRMOjlggvC44gR8P77uY5QREREMiTdRLE5sMLdK4FvgO1ijs0Gds90YNLAtWgBxx0HU6fChx/CySfDE0/APvvA3nvDvffCqlW5jlJERETqIN1E8TOgS/T1h8BIM8szszzgZGBhNoKTRqJ3b7jjDpg/H269FVauhJEjQy3j//1fmOBbREREGp10E8XnCQNXIPRXHAIsA74Ffglcn/HIpPHZcks44wz4+GOYMgUGDoSbbgr9GA85BJ57Dioqch2liIiIpCnVyizrufu4mK8nm9m+wFCgFfAPd385O+FJo2QGxcVhmz8/TLXz17/CUUeF9aVHj4ZTToFtt811pCIiIpJCrSbcdvd/ufvF7n6ekkRJqXNn+P3vw2jpJ56AnXYKo6a7doVf/QrefFPrS4uIiDRQNUoUzWwnM/ulmV0QPe6UrcCkiWneHIYOhVdfhZkzw3rSL7wQ5mbs0wfGj4fy8lxHKSIiIjHSnXC7wMzuAWYRpsm5JnqcZWZ3mVnLLMYoTc1uu4W+i19/HZqk3eHXvw6DX84+G2bNynWEIiIiQvo1itcBvwIuI6zE0iZ6HAecAFxbk5ua2elm9rmZrTaz6Wb2kxRlJ5qZJ9hWxJQpTlJm15rEJfWssBBGjYLS0tAEfcQRIXHs2RMOOgiefBLWrs11lCIiIputdBPF44DL3f1qd5/j7iuixz8AVxBGPqfFzIYBNxFGT/cB3gJeMrPtk5xyDmHexthtDvBYgrK94sp9mm5ckkNmsN9+8OCDYSLvq68OU+r8/OfQrRtcfnkYFCMiIiL1Kt1EsSXwXpJj7wItanDP84CJ7j7B3We5+1nAAmBMosLu/p27L6zagB8S1pmekKD4/2LLurvmYmlstt0WLroI5swJ0+nssQeMGwc77AC/+AWUlGjwi4iISD1JN1GcDByc5NjBwGvpXMTMWgB9gfiR0i8D+6UZy2nADHd/K8GxaWa2wMxeNbMD07yeNET5+aEp+qWX4NNPYezYMBDmwAOhV68wsfeyZbmOUkREpElLOo+ime0Y8/R64AEzaw08DiwCOgK/AA4Fjk/zfh0I60Qvitu/CBhY3clm1hY4Fvhd3KGqGsn3CbWbJwCvmlmxu09NcJ1RwCiAjh07UlJSkmb4tVNUVkZFRUXW79OkHXYYeQMHsu2UKXR+9lm2POssKi64gIUHH8z8o45ixY47Vn8NSUqfUWno9BmVxqC8vLzJfUbNkzTjmVklEHvQoseE+9w9v9qbmXUGvgYOcPc3YvZfBgx395SDT8zsDOAvQGd3/6aasi8C69z9yFTl+vXr59OmTasu9LopLqasrIx2paXZvc/m5P334fbb4W9/g9WrwzQ7p58epuBpUZOeEALoMyoNnz6j0giUlJRQXFyc1XuY2XR375fVm8RItTLLyVm43xKgAugUt39bNq1lTOQ04MnqksTIu4RBONIU7b033HsvXHcdTJwY1pr+5S9DH8fTTgujqbdPNj5KRERE0pE0UXT3+zJ9M3f/3symA4MITdhVBgFPpjrXzPYB9gTGpnm7IkKTtDRl7dvD+efDuefCK6/AbbeFUdN//GPo43j66WHN6bxaLUIkIiKyWUtrrecqZmZAT2BrYCkwy5O1XSdX1d/xPeBNYDTQGbgzusf9AO5+Ytx5owjT3byeIK6xwFxgBqGP4vHAzwjrUcvmIC8PBg8O29y5YaWXu+6CZ5+FnXcOK8GMGAFbbZXrSEVERBqNtKtZzOxUQg3dh0AJ8BEw38xOqckN3f1RQq3gJUApsD9wqLt/ERXZPtpi792G0Ix8V5LEtAVhUvAPgTeiax7m7k/VJDZpIrp1C7WKX30FDz0E22wD550XVn455RSYPj3XEYqIiDQKadUomtmvgPHAq4Sl+xYS+hn+ChhvZivd/ZF0b+rutwO3JzlWnGDfcqAwxfX+DPw53fvLZqJly9Bv8Ze/DKu/3HFHmNT7nntgn33gjDPC3IwFBbmOVEREpEFKt0bxQuAhdx/k7ve5+6To8WDgYeA32QtRJAOKisLygPPnh3Wmv/sOTjoJunaFCy8ME3yLiIjIRtJNFHch1CQm8mB0XKTha9sWzj4bZs0KE3gXF8P118NOO8Ghh8Lf/w4VWtBHREQE0k8UlwNdkxzrGh0XaTzM4Kc/hSeegC++gEsvhQ8+gMMPD0njNdfA4sW5jlJERCSn0k0UXwKuNrOfxO40s32Bq6LjIo1Tly5w+eXw5Zfw2GNhMMxvfxuapU88Ed55R+tLi4jIZqkmfRS/A0rM7Esze9fMvgD+CSyLjos0bs2bw7HHwpQp8PHHYeLuZ56BffeFvn3DdDsrVuQ6ShERkXqTVqLo7gsJE1ifA7xNSA7fAc4C+rh7OquqiDQevXrBrbfC11+H0dLr1oXEsUuXMLn3f/6T6whFRESyrtpE0cyam9lRQEd3v9Xdh0Wjn4e5++3uvrIe4mzcSkoovfHGXEchtdGmDYweDf/+N7zxRhjwctttsMsuMGgQPP10SCJFRESaoGoTRXdfCzwGdMt6NCINlRnsvz88/HDoy3jVVTB7NhxzDHTvHp4vXJjrKEVERDIq3T6Kc4BtsxmISKPRqRNcfHGYe/GZZ6BnzzBq+gc/gOOOg6lTNfhFRESahHQTxT8DF5vZNtkMRqRRadYMjjoKJk0KtYtnnRW+HjAA9tgj9G1crpmjRESk8Uo3UfwpsDXwuZlNNrMHzOz+mO2+LMYo0vD16BEm7v76a7j7bmjRAk4/HTp3DksFzpiR6whFRERqLN1EcX9gLbAY+GH0/Cdxm4hssQWMHAnTpoX5F485JiSOu+8eVoF57DH4/vtcRykiIpKWdKfH6V7NtmO2AxVpVMygf3+47z6YNw/+/OcwCGbYMNhhB/j978N+ERGRBiytRNHMOphZQbaDEWmSOnSACy6ATz8Na0n37RtGSXfrBkOHhjWnNfhFREQaoKSJopnlm9k4MysDFgHLzOxJM2tXf+GJNCH5+WEexhdegM8+g/PPh9dfh4EDYbfd4KaboKws11GKiIisl6pGcTTwe+BfwHXAs8BRwA31EJdI09a9O1xzTWh+vv9+2GorGDs2rPwyahSUluY6QhERkZSJ4mnABHf/qbv/xt2PBc4AjjezFvUTnkgTV1AAJ5wAb78N06fD8OHw4IPQpw/stx889BCsWZPrKEVEZDOVKlHcEXg8bt+jQD6wQ9YiEtlc7bUX3HVXmGLnhhtgyRI4/njo2hUuugjmzs11hCIisplJlSgWAsvi9lXNHtwmO+GIyPpm6E8+gVdeCUsH/vnPsOOOcMQR8NJLUFmZ6yhFRGQz0Kya413MLHbqm/yY/Rv1unf3ORmNTGRzl5cXBroMHAhffQXjx8OECWFAzI47wpgxcPLJ0L59riMVEZEmqrrpcZ4APo3ZPon2PxO3/9NsBSgihHWkr7wyzMX4t7+F5ugLLgiDX0aMgPfey3WEIiLSBKWqUTy53qIQkfS0aBEm7R42DD76KKwn/cADYWLvfv3CsoHDhoUVYkREROooaaLo7lq/WaQh690bbr8d/vSnMFL6ttvC8oHnnx+apEePhp13znWUIiLSiKW71rOINFRbbhlqEj/+GEpKYNAguPlm6NEDDjkEnnsOKipyHaVI7VVUwNKltFy0KExYr8+zSL2pbjCLiDQWZjBgQNgWLAhT7fz1r3DUUbD99vDrX8Mpp0DHjrmOVDZ3lZWwdi2sW7dhi30e+/Xq1eEfoZkzKaisDHON9u8PkyaF1Y5EJKuUKIo0RdttB5deGuZffO650ER98cUwbhwce2z4w7vffiG5rKqtWbIk1NYMGaI/wPXNPXnSlCqJylW5ul6jlmubG0B5Obz1Vpgm6vDDM/ptEJFNKVEUacqaNYNjjgnbJ5/AnXfCxInw8MOwxx6hH+Ojjza82hr3UOvUUBKbbJfLZVNqs2YbtubNq/869nnLlumVS/d6ib5+8skw0j82uVy1Cs46K6xadNRRoayIZIV+ukQ2F7vuCjfeCH/4Q0gUb7st1CxG1tfWvPEGnHpq6OOYy6QsV/Lyap/YFBRAYWHdk6P6KpefH2qVG7KWLeH558Nns0qLFrBiBfz852HqqDFj4LTToEOH3MUp0kSllSiaWQ93/0+2gxGRetC6dfijeuqpod/ihAkbH//++1DrGKsuCUtBQXYSoGwkUc2ahURRGo4hQ0It95QpeGUlVlgYnr/4YthuuQV+9zu4/HL45S9DTWOfPrmOWqTJSLdG8RMzmwLcCTzt7uuyGJOI1AczOPJIeOSRjWtrWreGe+8Nx6oSp4Ze6yRNV35+6ApRVMTqJUtoNWHChn60P/tZ2GbMgFtvhfvvD5/dH/84JIzHHBP+GRCRWkv3X+eRQCvgUWCemV1tZt2zF5aI1Iuq2pq8PBxCs+mPfhT+wLZs2TiaJqXpy8+H9u1Z07FjGMAS33+2V68w+fy8efCXv4RR/8cdB926wVVXwf/+l5OwRZqCtBJFd5/o7vsBRcCTwOnAp2b2DzM7ysxq1FZjZqeb2edmttrMppvZT1KUnWhmnmBbEVduQHSt1WY2x8xG1yQmkc1SVW1Nz56swBsUdgAAIABJREFU7tQp1C7meiCLSG1ttRWcdx785z+hX+Puu4fR/z/4AZx4Irz/fq4jFGl0apTgufuH7n4G0Bn4NdAReAr40szGmVm1E7SZ2TDgJuBqoA/wFvCSmW2f5JRzgO3itjnAYzHX7A68GF2rD/BH4BYzG1qT1yeyWaqutkakscnPD5/lSZNg1qzQJ/fpp2GffWDffcNgru+/z3WUIo1CbXttdwP2iB7/v737DpOrLN84/r3TINQISOi9N0GiFCmhV5Uq0iI1FAUEqYLSBOlFEGkaqnSQYij+0KUHSKSIIDWUhF4CBEggm+f3x/tOOBlmN7ub3Sm79+e69tqZc95zzjPZk5ln3vol8AxwCPCSpK2ncewhwGURcUlEPBcRBwBvAftVKhwRH0fE26UfYHFgMaDYA39f4M2IOCCf8xLgcuDQDr4+MzPrDpZZJvVfHDMGzj0XPvgAdt4ZFl44zSv61lu1jtCsrrV5ehxJ/YDtSTWJPwBeA04B/hwR70v6FnAxcBZwSyvnWBU4o2zXPcCabQxlb+C/EfFwYdsa+RxFdwM/k9Q3Iqaaa0PSUGAowMCBA2lqamrjpTtu/PjxVbmOWUesPG4czc3NvketbnXKPbrSSnDhhcwxciTz33wzcx5/PJNPOon31lmHsdtuyyfLLus+uTZduuNnvaINM+RLOhP4GTCAlIBdAAyPsoMlrQXcHxEVayolzQeMBdaNiPsL238L7BwRS08jjtmBN4FfR8S5he0vAFdFxAmFbesA9wHzRUSLXxkHDRoUI0eObO2ynaKpqYnBgwd3+XXMOmTwYMaNG8eAJ5+sdSRmlXXFPfrii2k+0WHD4JNPYNCgNFp6hx3SYC6zdqrGZ72kURExqEsvUtDWpuddgT8DS0TEFhHx9/IkMfsfsHsbzld+rCpsq2QXoDdwZRvPWWm7mZkZLLlkmoR+zJjUPD1+PPzsZ2nwy29+A2PH1jpCs5pra6K4QEQcERGvtlYoIt6PiMtbKfI+0AzMU7Z9buCdNsSxN3BTRHxYtv3tFs45CfigDec1M7OeatZZ4ec/h2efhXvuSVNEnXRSml5nhx3gwQc7vD61WaNra6J4raStJE3XzKUR8SUwCtiobNdGpBHLLZL0feA7TD2IpeQRYMMK5xxZ3j/RzMysIgk22ghuuw1eegkOPDCNnF57bfjud1MT9Rdf1DpKs6pqa6K4DGkanLck/VHS6tNxzbOA3STtJWlZSeeSptu5EEDSFZKuqHDcUOBFUr/DchcCC0g6J59zL2A3vjloxszMbNoWWyxN3j12LFx4YVp/fI89UrP0UUfB66/XOkKzqmjrhNvLAd8DrgK2AR6S9KKk30harD0XjIjrgF8CxwBPAmsBm0fEa7nIQvlnCkmzAj8FLq3UNzIiRgObA+vkcx4NHBgRN7UnNjMzs6nMPHNaE/0//4F77021i6edBosuCttuC01Nbpa2bq3N0+NExChglKRfAZuQBpYcARwn6eGIaHF1lQrnuoA0crrSvsEVtn0KzDKNc94HfLetMZiZmbWZBOuvn35eew0uuAAuvRRuvhlWXDGNlt55Z5hpplpHarUyeDArjxsH3Wz2iHZPuB0RzRExPCJ2ItUuvknb50A0MzNrbAsvDKeeCm+8kZJFCYYOhQUWgMMOg1dfrXWEZp2m3YmipMUlHZvnLryTNA3NmZ0emZmZWT2baSbYc89Ug3TffbDBBnD22bD44rDVVqmp2s3S1uDalChK+pakfSU9BLxAWhpvBLApsGBEHN6FMZqZmdUvCdZZB264AUaPhiOPhIcegg03hBVWgD/9Kc3RaNaA2lqj+DZwPvAZaTTxwIgYEhH/aGHibTMzs55nwQXTHIxvvJGm05lxRth//9Qsfcgh8PLLtY7QrF3amigeQ6o53DgiroyIz7syKDMzs4Y244yw224wcmSqXdx0UzjvvLQazJZbpom9J0+udZRm09TW6XFOb229ZDMzM6tAgjXXhGuvTaOljzkGHn8cNtkEllsuLR346ae1jtKsRe0azCLpO5J+ImlI+U9XBWhmZtYtzDcfnHBCmqz7yith9tnTtDrzz59WgXnhhVpHaPYNbR3MMiAPZPk3cA1wWf4ZVvgxMzOzaZlhBthlF3j0URgxAn70o7T6y9JLw2abwfDhbpa2utHWGsWTgTlJK58I2BpYH7gaeAX4fpdEZ2Zm1p2tthpcdVWqZTz+eHjqKdhii5Q0nnMOfPxxrSO0Hq6tieImpGRxRH4+JiKaImII8H/AQV0RnJmZWY8wzzzw29+mybr/+lf49rfh4INTs/TPfw7PPVfrCK2HamuiOC/wSkQ0AxOAWQv7bga26OzAzMzMepx+/WDHHeHhh9OI6e22S6u/LLccbLQR3HYbNDfXOkrrQdozj+KA/Pg1YI3CviU6NSIzMzODVVeFyy5LczL+7nepVvHHP05T7Jx5Jnz0Ua0jtB6grYnig3ydHF4JHCvpIkl/BE4H7u6K4MzMzHq8ueeGo49Oq75cf32avPvQQ9PvffaBZ56pdYTWjbU1UTweuCs/Ph34I6m5eUfgNuCAzg/NzMzMpujbF7bfHu6/H554IjVRX3EFrLgirL8+3HILTJpU6yitm2nrhNsvR8QD+fFXEfGriFggIuaIiJ0i4oOuDdPMzMymWHnl1HdxzBg45ZS0NOA228Dii8Opp8IH/li2ztGuCbcBJM0iaWFJfbsiIDMzM2ujOeeEI45IieLNN8Nii8GRR6Zm6b32StPtmE2HNieKkraU9G/gY9LciSvm7ZdK2qmL4jMzM7Np6dMHtt4a/vUvePppGDIkTbOz8sqwzjpwww3w1Ve1jtIaUFtXZtkKuBV4HziCNOl2yWjgZ50fmpmZmbXbiivCRRelZunTT0+jpn/yE1h0UTj5ZHjvvVpHaA2krTWKxwLDImJj4Jyyfc8AK3RqVGZmZjZ95pgjjY5+6SW49VZYdtk0enrBBWG33WDUqFpHaA2grYnissB1+XGU7fuItLyftWK99dZDUsWfiy++eEq5iy++uMVykqY656qrrtpiuaFDh04pN2rUqFbPOarwZjF06NAWy6266qpTXb+1c/o1Nd5ruuyDD7rda+qOfye/Jr+mdr+mPn3Qj3+M/u//WBa4ftZZ4cYbYdAgWHNNfirRt9FeUx3/nbqbtiaKnwBztbBvEcD12GZmZnXuf8CpCy0EY8fC2WfDu+9yLWkljd8Ac9c2PKtDiiivIKxQSLqaNHhlHeBT4CtgVeBZ4AHgyYhoyHR60KBBMXLkyC6/TlNTE4MHD+7y65h1yODBjBs3jgFPPlnrSMwq8z3aNSZPhrvugvPOS7/79oUddoADDoDvf7/W0TWWKt2jkkZFxKAuvUhBW2sUjwbmAZ4HLiU1Px8JPAksABzXFcGZmZlZF+rVCzbfHO68E/73P9h339SfcbXV0s9VV8HEibWO0mqorRNuvwp8F7gD2AhoJtUujgBWi4g3uypAMzMzq4Kll4Y//CGNlj7vPPj4Y9h1V1h4YTj2WHjTH/U9UZvnUYyIMRGxZ16RpV9EzBsRu0fEG10ZoJmZmVXRbLPBL34Bzz6bmqMHDYITT0wJ4447wsMPQxu6rVn30O6VWczMzKwH6NULNtkE7rgDXngh9VscPhx+8IOUPF52GUyYUOsorYv1aWmHpN+24zwRESd2QjxmZmZWb5ZYAs46C044Aa68Es4/H3bfHQ47DIYOhf32S8sGWrfTYqJI5QEqwdSrshS3O1E0MzPrzmaZJSWF++4L//xn6sv4+9/DqaemJQQPPBDWWgtUKVWwRtRa03Pfsp/+pCRxtQr7+nVtmGZmZlY3JNhgA/jb3+Dll+Hgg+Hee9O60qusAn/+M3zxRa2jtE7QYqIYEc3FH2BS3tVcvi/vNzMzs55m0UXTmtJjxsDFF6e5GffaKzVFH3EEvPZarSO06VCTwSyS9pc0WtIESaMkrT2N8v0knZCPmSjpdUkHFvbvJikq/MzY9a/GzMzMmGkm2HtveOopaGqCwYPhjDNgscVgm23gX//yaOkGVPVEUdIOwLnAycAqwMPAnZIWauWwa4BNgaHA0sD2wNNlZT4H5i3+RISHY5mZmVWTBOuuCzfdBKNHw+GHw/33w/rrw0orpVrHzz6rdZTWRrWoUTwEuCwiLomI5yLiAOAtYL9KhSVtDGwIbB4R/4iIVyPi0YhoKisaEfF28adLX4WZmZm1bqGF0mCXN95I/Rb79IF99knN0oceCq+8UusIbRpaTBQlLVb8ARbLu+Yv35f3T5OkfqQ1ou8p23UPsGYLh20FPA4cImmMpBcl/UHSLGXl+kt6LZe5Q9IqbYnJzMzMulj//rDHHvDvf8MDD8DGG8M556Rpd370I/jHP9wsXadamx7nJdK0N+X+1kL53m243ly53Dtl298h1RpWshiwFjAR2BYYAJwHzAdsl8s8D+wBPAXMChwEPCTpOxHxYvkJJQ0lNWMzcOBAmpqa2hD69Bk/fnxVrmPWESuPG0dzc7PvUatbvke7mf32o9922zHf7bcz3+230+/22/ls4YUZu9VWvLPJJjT371/rCNutu96jihYyeEk/a8+JIuLyaV5Mmg8YC6wTEQ8Uth8L7BgRy1Q45h5gbWCeiPg4b9sYuDtvK086kdQbeBL4V0QcWL6/aNCgQTFy5MhphT7dmpqaGDx4cJdfx6xDBg9m3LhxDHjyyVpHYlaZ79Hua8IEuP76NCfjyJFpCcHdd0/LCC6xRK2ja7sq3aOSRkXEoC69SEGLNYptSfw64H2gGZinbPvcfLOWseQtYGwpScyey78XqnRcRDRLGgksOX3hmpmZWZeacUYYMgR23RUefTQljH/8I5x7Lmy+eVo6cOON05KCVnVV/VePiC+BUcBGZbs2Io1+ruQhYL6yPolL5d8VJ2eSJGAlUpJpZmaNrqmJJ885p9ZRWFeSYPXV4eqr4fXX4dhjYdQo2GwzWGYZ+MMf4JNPah1lj1OL9PwsYDdJe0laVtK5pP6GFwJIukLSFYXyfwU+AIZJWl7SD0jT69wYEe/mY46VtEkeWLMy8GdSonhhFV+XmZmZdYZ554XjjksJ49VXwxxzwEEHwfzzpxrG55+vdYQ9RtUTxYi4DvglcAypH+FapKlvSrWDC+WfUvnxpIEus5NGP18P3EcavFIyALiY1CR9DzA/qR/kY136YszMzKzr9OsHO+0EI0bAY4+l9aQvvjjVMG6yCdxxR1oJxrpMTRr8I+KCiFgkImaIiFUj4v7CvsERMbis/PMRsXFEzBQR80fEzyPi08L+gyNi4Xy+uSNik4h4pIovyayxuVnPzOrd974HV1yRahlPPBGeeQZ++ENYaik4+2wYN67WEXZL7hlqZmZmjWPgQDjmGHj1Vbj2WphnHjjkkDSJ9377wbPP1jrCbsWJopmZmTWevn1hhx3gwQfTRN4/+QkMGwbLLw8bbAC33grNzbWOsuE5UTQzM7PGtsoq8Je/wJgxcPLJ8MILsNVWaR7G00+HDz+sdYQNy4mimZmZdQ9zzQVHHQWjR8ONN8LCC8Phh6dm6aFD4T//qXWEDceJopmZmXUvffrAtttCUxM89RTsvDNcdRWstBIMHgw33QSTJtU6yobgRNHMzMy6r5VWgksuSc3Sp52WBsFstx0sthiccgq8/36tI6xrThTNzMys+5tjDjjsMHj5ZbjlFlhyydRMvcACsMce8MQTtY6wLjlRNDMzs56jd+800OXee9NcjLvvDtddB9/9Lqy9Nlx/PXz1Va2jrBtOFM3MzKxnWn55+NOfYOxYOOssePPNNOXOoovC734H775b6whrzomimZmZ9WwDBsDBB6dpdW6/PSWQv/kNLLggDBkCjz9e6whrxomimZmZGaRm6S23hLvvhueeg733Tv0Zv/99WGMN+Otf4csvax1lVTlRNDMzMyu3zDJw/vmpWfrcc+GDD9I0OwsvDMcdB2+9VesIq8KJopmZmVlLZpsNDjwQ/vc/uPPOtArM8cenhHHnnWHEiDQn4wcfMMM778Add3SrpQOdKJqZmZlNS69esOmmMHx46su4//4pKVxjjTT1zn//y4xvvw077gibbNJtkkUnimZmZmbtseSScM45aRLvffeF8eMhAkF6/OijqfaxG3CiaGZmZtYRs84K8833ze2ffQZPPln9eLqAE0UzMzOzjlplFZh55qm3zTwzrLxybeLpZE4UzczMzDpqs81gtdWgVy8CYJZZ0vPNNqt1ZJ3CiaKZmZlZR/XuneZdXG45JswzD1xzTXreu3etI+sUfWodgJmZmVlD690b5pyTib1703/LLWsdTadyjaKZmZmZVeRE0czMzMwqcqJoZmZmZhU5UTQzMzOzipwompmZmVlFThTNzMzMrCInimZmZmZWkRNFMzMzM6vIiaKZmZmZVeRE0czMzMwqcqJoZmZmZhXVJFGUtL+k0ZImSBolae1plO8n6YR8zERJr0s6sKzMtpKezfuflbR1174KMzMzs+6t6omipB2Ac4GTgVWAh4E7JS3UymHXAJsCQ4Glge2BpwvnXAO4DrgaWDn/vkHSal3xGszMzMx6gj41uOYhwGURcUl+foCkTYH9gKPKC0vaGNgQWDwi3s+bXy0r9kvgXxFxUn5+kqT18vYdOzl+MzMzsx6hqomipH7AqsAZZbvuAdZs4bCtgMeBQyQNAb4A7gR+HRHjc5k1gPPKjrsb+EULcQwl1U4ycOBAmpqa2vdCOmD8+PFVuY5ZR/ketXrne9Tq2crjxtHc3Nzt7tFq1yjOBfQG3inb/g6p1rCSxYC1gInAtsAAUlI4H7BdLjNPC+ecp9IJI+Ji4GKAQYMGxeDBg9vzGjqkqamJalzHrKN8j1q98z1qdW3AAMaNG9ft7tFaND0DRNlzVdhW0ivv2ykiPgaQ9AvgbkkDI6KUILbnnGZmZmY2DdUezPI+0Mw3a/rm5ps1giVvAWNLSWL2XP5dGgDzdjvPaWZmZmbTUNVEMSK+BEYBG5Xt2og0+rmSh4D5JM1S2LZU/v1a/v1IO89pZmZmZtNQi3kUzwJ2k7SXpGUlnUvqb3ghgKQrJF1RKP9X4ANgmKTlJf2ANL3OjRHxbi5zLrC+pKMkLSPpKGA94JxqvSgzMzOz7qbqfRQj4jpJcwLHAPMCzwCbR0SpdnChsvLjJW1IGsDyOPAR8DfgyEKZhyX9FPgdcDzwMrBDRDza1a/HzMzMrLuqyWCWiLgAuKCFfYMrbHse2Hga57wRuLEz4jMzMzMzr/VsZmZmZi1womhmZmZmFTlRNDMzM7OKnCiamZmZWUVOFM3MzMysIieKZmZmZlaRE0UzMzMzq8iJopmZmZlV5ETRzMzMzCpyomhmZmZmFTlRNDMzM7OKnCiamZmZWUVOFM3MzMysIieKZmZmZlaRE0UzMzMzq8iJopmZmZlV5ETRzMzMzCpyomhmZmZmFTlRNDMzM7OKnCiamZmZWUVOFM3MzMysIieKZmZmZlaRE0UzMzMzq8iJopmZmZlV5ETRzMzMzCpyomhmZmZmFTlRNDMzM7OKnCiamZmZWUVOFM3MzMysIieKZmZmZlZRTRJFSftLGi1pgqRRktZupexgSVHhZ5lCmd1aKDNjdV6RmZmZ9WhNTTx5zjm1jqLT9an2BSXtAJwL7A88mH/fKWm5iHi9lUOXBz4sPH+vbP/nwOLFDRExYfojNjMzM+uZqp4oAocAl0XEJfn5AZI2BfYDjmrluHcj4v1W9kdEvN1ZQZqZmZn1dFVtepbUD1gVuKds1z3AmtM4fKSktyTdK2m9Cvv7S3pN0hhJd0hapTNiNjMzM+upql2jOBfQG3inbPs7wIYtHPMWqbbxcaAfsCtwr6TBEXF/LvM8sAfwFDArcBDwkKTvRMSL5SeUNBQYCjBw4ECampqm5zW1yfjx46tyHbOO8j1q9c73qNW77niPKiKqdzFpPmAssE5EPFDYfiywY0Qs0+LBU59nODApIn7Uwv7ewJPAvyLiwNbONWjQoBg5cmRbX0KHNTU1MXjw4C6/jllH+R61eud71OpdNe5RSaMiYlCXXqSg2qOe3weagXnKts/NN2sZW/MosGRLOyOiGRjZWhkzMzMza11VE8WI+BIYBWxUtmsj4OF2nGplUpN0RZIErNRaGTMzMzNrXS1GPZ8FXCnpMeAhYF9gPuBCAElXAETEkPz8l8CrwH9JfRR3AbYCti2dMDddjwBeBGYDDiQlivtV4wWZmZmZdUdVTxQj4jpJcwLHAPMCzwCbR8RruchCZYf0A84A5ge+ICWMW0TE8EKZAcDFpCbtj4EnSP0gH+uyF2JmZmbWzdWiRpGIuAC4oIV9g8uenwacNo3zHQwc3FnxmZmZmZnXejYzMzOzFjhRNDMzM7OKnCiamZmZWUVVnXC7Hkl6D3htmgWn31ykeSTN6pXvUat3vket3lXjHl04Ir7dxdeYoscnitUiaWQ1Z1I3ay/fo1bvfI9aveuO96ibns3MzMysIieKZmZmZlaRE8XqubjWAZhNg+9Rq3e+R63edbt71H0UzczMzKwi1yiamZmZWUVOFM3MzMysIieKZtbpJM1a6xjMOkqSPxvNMv9nqFOSlpU0X63jMGsvSTsCZ0tastaxmLWXpI2AbSTNWOtYzKaHpI0kTffE3E4U65CkfYAHgX0kzVPreMzaStLOwNXAHsDvJC1a45DM2kzS3sDdwKXAJpL61Tgksw6RNJR0L4+UNHB6zuVEsc5I+gFwEjAC2BXYy8miNYLcXLco8F1gaeCHwGlOFq0RSJoX2AbYELgNGAZs7mTRGomSRYALgWOBF4EHpidZ9PQ4dUbS0kCviHhO0vGkmpmLgEsj4u3aRmdWmSRFREjqFRGT87ZBwP3A34HDI2J0TYM0q6B07+bH80XEm/nxjcD6pPfg4RHxZQ3DNGsXSd+OiPckrQmcBswNrB0R77T7XE4U60PZm1XxsZNFq1uSekdEc+F5r4iYXNouaVXgAZwsWh0q3KczRMTEvK1vRHyVHztZtIZS+NLeJyImSRKwOnA6HUwW3fRcY6XRdVHI2PMfuV9+fCzwZ2Af3AxtdaTwITtA0i35w3YyQN7eOyJGAWsDW+BmaKsjhft3ZuBWST8DiIivJPXOj7cD/gn8BTdDW50qjtIv5RIRMan0PCIeAQ4D3qUDzdBOFGsov1FNltRf0hBJB0jaEiAivpTUJz8+DieLVkcKH7KzAU8As5VqZEry/j5OFq3elN2/zwAbA2uU9pe+6OTHThatbhVacWaRdIakYZLOkrR6KYcAmJ5k0U3PNVL4485GGuE8DlgcGAucFxFX5nJTmvYkHQfsiZuhrYYKTRuzAf8B/h0RWxf29yl9m83NHr1zE0ixGfqwiHi1BuFbD1chSfwnX4903jB/oE5VNj92M7TVJUmzAE8BbwIvAesBHwF3AccVv8RLWoN2NkO7RrFGcpI4M+mD81lSbcsgYBKwRKFcs6QZ8uPjSCPx9gH28DyLVguFrhH3Ax+WkkRJR0u6EnhM0lGSVsrNIMWaxXWAjYCzJC3R4kXMukh+T52d9CVnRETsBjwOvAFsAFN1CapUs/hnYCtJ/WsQvtkU+Ys4wC+B14B1I2J3YCngH6Sa8rNKOQRMqVk8glSz2NSWmkUnijWS/8CHAWNIid/4iHgLeAiYXdJvJe0PEBETC30Wf0sawXQUsJObQaxGFiBNu7CApFUknQfsQKoZfxbYFjhD0vK5j8ykXDszkvRlZzPA965VVZ46pBcwHBgVET8BiIiXSB+s+0uavdTXNu9rLnQD2g74jPTB7NWHrKYKYxvmAmYsbP8SOA64FfgecJCmXm3oYWAXYCBwk6S+rV3HiWLt9CK9MZ0CfJJrabYFfgUsRKo6PlDScJjSZ7F3PvYtYGbgCTd/WC1ExCvAr0lNG6Wawq0i4oCI2IU0F+gCwLqFY5olfY90bw+JiGerH7n1ZPlLy2TS/bcNpK4SefefgM9JX9zLjyt1pdgA6A+cFRHvVidqs8oKNYpvkxLFefP23hHxOXAWqXvFDsBspWNygrkFKY84ozTKv8XruI9i7eQsvjk3Q89L6mPwO+C8XGQHUl+C7SLi0XxTDCDVJj4YEbfVIm7r2cqmb1qWNDH8M8A1pPeU0jyKI4AxuRamdOwMwCIR8Xz1IzdrmdKSfTcDM0fEui2UWZuUbz5Y1eDMmPq9t2z7/KT34OsiYt+8rdQXd3bgA2DniLiucMwPgRkj4oZpXbfPtApY1ylm8RHxlqRVI+KNwmCB0jfWj3KZAD6SdEJEjK9FzGbFN6pIE8NfAHyct0eu+e5N6lj9WKlsHsA1EXCSaHUlv+dOyAMGH5C0c0RcXV4uIh6ofnRmUyV+fYBZImJc3t4nIsbm6Z1ukDQ+Ig6Nr+e3FfA08HHxfBFxe1uv7abnOlCoPh4DU30QLw+MBj4tlneSaPUkIsZExKeF582k2vDVSX1hStsnVzjcrOYK77mvkmah2LisT5dZzeQvMs15dPOdwH6S5oCvu0UAdwB7Az+XdLWkNXNN49akpVXbvSLLlOu76bn+5NF0OwHnALtExK01DsmsTXLT3DrA0cBuEXF9jUMyaxdJhwG/B+aNiPdqHY8ZTOkacQdpvs/PSf3AL4+Ij8rKrUua87MvMJk0aPCQiLi2o9d203OdkbQ66RvAEGCPiLi1pX4JZnVoMWBNYPuI+LvvXWsUhXv1cuCfThKtzmxBakZeHfgpcCKApCnJYr6H78tz1q4IzAC8GRHPTs97sWsU64ykuYFtgKci4pFSs7Q/bK1R6OvF6H3vWkPzFx2rF5JWAFYCrs0DYE8GfgH8FrgiIj7M5aZMEt9p1/b/gfpRGMTS6X9os2nJg02+0Y+wpe0VyvlD1Wqm/H2zrfetWaMov6clnQQcQEoWL4+IjyRtCDwfEW901nXd9NyJKvwR2/VGVfqQdZJo1VYALywiAAAYDUlEQVQYUdcf2B6YHRgdEXe09R52kmi1Urh/B5AmdP9plK09btboClOP9YqIyRFxtKQgNUNHvv8PBDYlrTTUKZwodhJ9vXbzTKT1E+/Oz/2t1upavkdLa99Ote64pG9FXne87BjXHlpd0NRrNz8BvOIk0bqznFv0jojmiDhGUjNwdt69c0Q83pnX8/D/TpA/NEtrNz8CXJ3nNCr9Qb/x71zaNq2lc8y6WrRx3XFIH8r5mJC0jKQF8nZhVmWFaUNmI63d/GREbFDY/43KkNK9mu95Kr0/m9W7fN+X7t0xpBHOW0bENZ39fuz/IJ0gf2j2Ay4BJgL3kpbf2z3v/0aymLetDhwuqZc/aK1W8r3X1nXHm/P9OgdpjsST83bXLlrVFd577wc+jIitASQdLelK4DFJR0laqeyYlYBnJC3oFh9rVDmPWBe4iDQd2fCuyCWcKHaeeUj9us4kzW/0FHBAa8kisB2pb8Fi/qC1GmrvuuOTgU+AY4BFJc1Xm7DNgLSm+IvAApJWkXQeacL3caQa8m2BMyQtXzhmNqAZ2LnawZoVFRO7DtZu/w9YJSKu6qqZJtxHsZNExOuSDiatbfu5pHOAg0nJIhExrEKfxd8ASwI/AF6qUejWw+VawsdI646H0rrjfwJ+Sdm645JWi4hHI2KSpIeAtQCvFGQ1ExGvSPo1aeTnKFIT9FYR8QqApK1JX97XBf6bD3sEuB2Yt/oRmyWF/rV9I+KrjtRuR8Q7FFZd6YpKJ0+P0wUKA1tWINXKfAf4Q0RcJulQ4O2IuCqX3Ru4Izf1mdWF3CRXXHd8fdJExBtExAuFcrNGYfk+s2oqDqqStCywK/AMcA3p8600SnQE6Uv8doV7ejZgjoh4tUbhWw9WSBJnBm4CromIy2sdVyVueu4CpTeniHiG1BT9JLC/pOuB08rKXuIk0epFoRmkTeuO49pEq6Fi7UlEPAdcANweyWRJvXMfxjeBx0rH5C/znzhJtFooG6n/DLAxaWm+uuREsYsVksUZSH0Sty32JTCrJ4W5PEu1NP0l7UkatHJm+Zca9621ehIRY4o13HlO2h1Iy549XNjuASxWExWSxPtIfWV3lVQxWSzvu1jt/MF9FKtjXWAFYOvIazfXOiCzaZHXHbcGJmltYB3gaNKI0AdrHJJZqU/47MDTwIiI2E3SEqQJsjcAHimffznXjq8BbBoRx1b7Pdg1il1M0lykmdKHFJNEf9haA3iF1Ny8TUTc4C841mAWA9YEto+I633/Wq0p6QUMB0ZFxE8AIuIl0swT+0uavbzGO88HujnwG0nfq3rczle6Xv7Df+wk0RpFocO/1x23hiXp2xHxnt97rZ5IWjwiXs6P++RZJJYDbgMujojTKhyzGGmu5tMi4u5qxusaxVZU+gbawXmOPoH0JuU3KquGCn1a2nXfFvoqOkm0qmvpfm3rfVxIDN/Lv/3ea3WjlCTmx5Pyw1eAF0grY1U65hXgOtKcoVXlGsUWFDqczgAsB8wIPB0Rn9U4NLNWqcK648XtNQ7PrFWF997+wPakhQxGR8QdNQ7NrEsUWnC+T1pKdY+IuLp8f63i82CWCvIfpTQq6Z/AAGBWYIKkI4B7S99UWzneGbhVXb73Sms3PwzML+lXEXF5fHPC99IxpcSyb0R8VZvIzabci6X33gdJq6ssDoyV9K2IuLLCMX6/tYZWuH9fJd33G0u6pjDVXk3vbzc9V5Az+76k/gKvAD8ENgTuAc4nLWe2QKl8qTlE0sD8Yes3LauJfO963XFrSIUvOQ+Qlt/bAhgETAKWKJaV1DsfE5KWKb0n+/61RhUR7wJ3kabLmbPG4UzhRLFlcwEDgWER8VxE/Cci9gbOJk0XspukWWHKm9tKpOWjVgO/WVlNed1xa0j5ffMw0oTv+wDj89ydDwGzS/qtpP1hyjQjvSTNQao9Pzlv9/1rDaeQM1wOrNZaq2W1OVEsKH1DzX+wWYA5yP9Gub8MEXESMAw4nLQ0X8mL+Zgdczm/WVlNRMTrpHXGb4+Ip4FzmHay+BvS2rc/qHa8ZgW9SNOEnAJ8kmsLtyUthboQsB6phnw4TJk4+xPgGGBRSfPVJmyz6VMYQPhuRIyC+qlwcqKYKa25vGceqh4R8SKphvB3ABHxRW7SIyKOA/4FnJDnReobEV8AuwN9lVazqIs/sPVMEfFCRHye+3w9TapdLCWLu+Vih0jaJZf/AriD1L3CrCbyKPvHgIdykjgv8Cfgl8C2wPrAccCKklbLx0wi1Ti+gZeUtBopVTQVnk93flUvFU5OFAFJ2wMXAW/m+Yz65l3HAf0l3ZQ/cL/Mo6AhNXX0J40cLw0AeAz4dUR8US9/YOvZwuuOW4OJiK8K9+1bwKoR8Yf8PIB3c9GPCsc8BewTEZ9UO16zwkj9AZJukTRDd5phoscnirlJeQ/gJfIo8ELi9xRwOrAU8Ld8M0zM+/oDXwAzlb45RMTYiHi/mvGbtVV43XFrIIX7cgxMVbuyPGnFoE/LDnFtolWdpl67+QlgtkKe0C30+OlxcpPy/qRBKgdLmrU0BUNETJR0DWn06NHAy5LuAgLYk7Q0lN+crJF43XFrCIU+WwFTvtTvRBq0skt57bdbcazayqbS+w/w74jYurC/T3w9oXbxmJA0c0R81gjz23rC7UzSosB5pPkSLy3O15X7HswDHAksQvome1VEDPccXtYolNYdfxA4MSKuLiWJvn+t3uXpm7YmzThxYOS1x33vWq3lsQuPkd5KV8nbjgaWIdV+3wD8PfcVLx2zEnArsE5EvFH9qNvHiWJBS8li+RtSYYJif9BaQ5HXHbcGJGluYBvgqYh4xPev1QulNZhPBQYDG5O6sq0L3Ad8i5QwfggcHBH/zcesBVxGyjNOqX7U7eNEsUwryeKUVSv8TdaqrdI915EmC9+71mgKTXW9w2uPWx2StCTwW9JE2f8hde15Je/bmjSf7fkRcUHe1hs4A+gVEQfVJuq2c6JYQVtrFs2qQV533BpY+ReaRuiTZdYWxZxA0rLArsAzwDWk/Gpy3jcCGBMR2xW++MwGzBERr9Yo/DZzotiCSsmipCVIf+wJtY3OeoqyN5Wp1h0HvO641bVCN52ZgLUj4u7i9hqHZ9aplJaR/DgiPs3PewO9gWuBERFxWt7eUPd/j58epyURMRo4gDRwZWdJNwAjSINazKoiJ4led9waTv6SUlq7+RHgakk/gxaXkSzev33L95nVu4gYU0oS8/NmYAdgddLcy6XtDZMkghPFVhWSxRmANYH9GqGa2LodrztuDSd/yekHXEKaYuxe0hebFtccz9tWBw5XWsfZ9641JElr59HPFwG/jIgHax1TRzlRnIacLO4K/Cgibqh1PNYzyOuOW/cwDzA7aaL3k5j2muOQJoM/EVjM9641sMVIFUzbR8T1jfylx30UzeqM0rrjAv5SmqxV0nBg3sI8Xf0i4sv8+FZSv8UNgD4R8VUeabcZcBAwwR+4ViuSliL17f4813YfTPpic15EDMtlpvTZyl+ErgVujojLaxW32fSS9O2IeK/Rp3NyjaJZHZHXHbduJiJeyElirzzp8Jl8XbO4Wy52iKRdcvkvgDtI/XDNqq5S/9nWtlcoV0oM38u/o5Hfh50omtUJed1x68ZKNYbx9ZrjTwL7S7oeOK2s7CVRtkSfWTXk99bJkvpLGiLpAElbQtsHoTRyUliJm57N6kieluls0oz+5UtJzkRaneJoUnJYvu74rdWP2KxjJC0P/BVYEdg2Im7xdE5WS4XpnGYjLXc6DlgcGEvqKnFlhWO6/T3rGkWzOpIHTx1MmpZpL0m7FvZ9TprIdUPgdmB+0kCBrSLi1kbuLG090rrACqRVLG7x/Wu1VpjO6QHgWWALYBAwCViiWLY04DCP7l+mNE1Zd7yPXaNoVofaujqQvO64NSBJc5FqbE6MiKt9/1o9yPfhscD3gJ2AT3IieDrQl7Rm8/vx9VJ8vUiLILwE3BERQ2oTeddyomhWp1pJFr3uuDU8SbNHxMdOEq1e5FrC1UmtrQ/mJHFb4Abgb6QuQfMCr0TE5vmYPsBQ0nRkO0TEmzUJvgu56dmsTpWtDjSlGTpPf+MPV6uJSk1rbR0NWuYTaPwRodZ95JVUHgMeyknivMCfgF8C2wLrk2agWFHSavmYScBDwBvA+FrE3dVco2hW5yrVLMrrjlsN5BGhzXlqpuWAGYGnI+KzGodm1iUkLRgRb5RabyStD1wObBARLxTKzRqF5fu6E9comtW58LrjVgfyB2VzHhH6EF83xz0r6aeSvj2t46sRp1lnKNyvY2Cq1pvlgdGk9+OiblmbCE4UzRpCeN1xq7Fcm9IXuA14BfghaQT+PcD5pHWcFyiVLzVHSxqY+9W6+coaRul+Lf3O8yruCZwMnFk+z2d3vr/71DoAM2ubiBid+ykOjIhRtY7HeqS5gIHAqRHxXN62t6RXSR36J0o6NyI+zaPxVwKGAz8FHvTgK2tEklYHtgaGAHuUpiPrKfeyaxTNGkhEjHGSaNVUmi8uN8XNAsxB/uzIqwkREScBw4DDSes4l7yYj9kxl+sRH6zW7bxCam7eJiJu6GndKDyYxczMKpK0NyDgL3l0J5KGA/NGxCr5eb+I+DI/vpU06GoDoE8eob81sBlwEDDByaI1ksIglt55VHSP4xpFMzP7BknbAxcBb0bEpNw/EdL0IP0l3ZQnfP8yj4IGeJi0vKQK65Q/Bvw6Ir5wkmjVVj51U3uncir0VeyRSSI4UTQzszK5SXkP0ooTfSDN35l3PwWcDiwF/C3XtEzM+/oDXwAzlT6QI2JsRLxfzfjNYKqVq2aStAlMWabPuU87uOnZzMy+Ic/feTZpNYopKwPlfTMB2wBHk5LDu4AA9gS2j4hbqx+x2dcKTcYzk2q65wd+FRGX5/29ImJy2TGlxLJv4YtRj+dE0czMKmppGcm8rzdpLs8jgUVI88pdFRHDe9KIUKtfkvoBlwFLkAajLAGcHxHD8v5KyeLqpD62vycvHFTVoOuQE0UzM2tRK2uOT5UMFmpjvLyk1QVJC5GW4LsCeI60FN/KwHktJYuSzgAOAZaKiJeqH3X9caJoZmataiVZnNJE51pEq0eSliItd/p5ntfzYNIUThWTxdw/91rg5lIzdU/nDp1mZtaqsmUk98oTv5Onv3ENotWtiHghJ4m9IuJp4EzSgKwDJO2Wix0iaZdc/gvgDtKKQ4ZrFM3MrI0q1SxKWoJUYzOhttGZtY2kFUjNyysArwLbAUMi4qpaxlWvnCiamVmbFZLFPqQaxvWAQV573BqJpOWBvwIrAttGxC3uPlGZm57NzKzNCs3QMwBrAvs5SbQGtC6pRnHrUpJY64DqlWsUzcys3SQtAAz02uPWaCTNBTwInBgRV7ufbeucKJqZmVmPImn2iPjYSeK0OVE0MzOzhlCpH2GlibM7ch6rzImimZmZ1b28rnizpBmA5YAZgacj4rMah9atOVE0MzOzulZYu3k24J/AANI0TROAI4B7I+K9aR1fnWi7F496NjMzs7qWk8S+wG3AK8APgQ1JE2OfDxyYB1gBqTk6/x6YVxBykthBThTNzMysEcwFDASGRcRzEfGfiNgbOBsYAuwmaVaAvO74SsAoYDVItYo1iruhOVE0MzOzuiSpd/4tYBZgDnLuktdlJiJOAoYBh5PWcS55MR+zYy7nWsUOcB9FMzMzqzuS9gYE/CUiJuVtw4F5I2KV/LxfRHyZH99K6re4AdAnr0W+NbAZcBAwwcli+7lG0czMzOqKpO2Bi4A3I2JS7p8IcBzQX9JNeVqcL/MoaICHgf6kSrCv8rbHgF9HxBdOEjvGiaKZmZnVjdykvAfwEmlNcQqJ31PA6cBSwN/ylDkT877+wBfATKXBLBExNiLer2b83Y2bns3MzKyuSFqUNEjlW8ClEXFlYd9MwDbA0aTk8C4ggD2B7SPi1upH3H05UTQzM7O6k5PF80j9DsuTxd7APMCRwCLAp8BVETHccyZ2LieKZmZmVpdaShbLk8HSMn5eu7nzuY+imZmZ1aWIGA0cQKox3EvSrnl7FAa4QGp6JrLqR9p9uUbRzMzM6lpbaxat87lG0czMzOpaSzWLwOKSZqxdZN2faxTNzMysIRRqFvuQksb1gEER8Wot4+rOXKNoZmZmDaFQszgDsCawn5PEruUaRTMzM2sokhYABkbEqFrH0t05UTQzMzOzitz0bGZmZmYVOVE0MzMzs4qcKJqZmZlZRU4UzczMzKwiJ4pmVnckbSzpTkkfSJog6XlJp0gaMB3nbJL0YBvKHSepuIbsgLztu228Ti9Ju0t6TNKHkj6T9LKkayV9vwNxD5YUkjZs77EdlV/v+tW6npnVLyeKZlZXJP0auBuYAOwFbAJcBOwOPCZp/i4O4VJgjcLzAcCxQJsSReAM4BLgfmAXYCvgLGAuYLXOC7NLHQs4UTQz+tQ6ADOzEknrAb8DzomIgwu77pN0CzAKGAZs3FUxRMQYYExHjpXUH/g5cF5EHFrY9Q/gj5L85dzMGorftMysnhwOfAgcVb4jr8hwCrCRpFUBJC2Sm2V3K5YtNNcOLj+PpB9LekbSREn/k/STsv1Tmp4lLQKMzrsuyef8xvUKZgb6AW9X2hkRkwvXuUzSqxXia5LUVOHw2fMxH0n6RNLVkuYsO/YgSc9J+iKXGylp67Iy20gaIelzSeMk3SBpocL+UrP70YXXe1wLr9fMujknimZWFyT1AdYF/hERE1oodlv+vUEHL7ME8AfgTGAb4CXg2lyTWclbuRzA70lN0msAf69UOCLeJyWWh0rat5iAdYJzgAB2BI4GfgTcWNopaWfS67oG2BzYOe+fo1BmX+Am4FlgO2AfYAVSje2suVip2f0yvn69l3bi6zCzBuKmZzOrF3MC/YFXWylT2rdwB68xEFgjIkYASLoL+C9wArB2eeGImCjpifz0ldJx07ATcC3wp3yNN4G7gIsi4rEOxg3w34jYPT++S9KHwFWSNoiIe0kJ3dMRcULhmOGlB5JmAU4FhkXEHoXtjwIvAHuSmvxHSAIY28bXa2bdmGsUzaxeqB1lJ0+7SEVvFJOfiGgGbgC+31n9B/P5lwY2I9XwvQr8DHhE0pDpOPX1Zc9vIP07lGoAHwdWlnSepA0lzVRWfg1gNuBqSX1KP6T+mP8D1pmO2Mysm3KiaGb14n3gC2CRVsqU9o3t4DXeaWFbP+DbHTznN0TExIi4KyIOjYgfAMuR+i2eNR2nnSr2iPgS+AgojQK/AtiPNLL6buBDSTfnfpYAc+ff/wd8VfazIqlG18xsKm56NrO6EBGTJN1PGqwyYwv9FH+Uf9+Xf5fK9Csr11LSM7CFbV8C77Un3vaIiBckXQccLGnuiHiXFHt53JBi/6CFOKeQ1A/4FjlpjoggTSN0kaRvkUaGnwlcR0oeS+fcjdTcXu7Tdr4sM+sBXKNoZvXkdFKidHL5DkmLAkcAT0XEI3nzO8BE0oCMoi1aOP+CklYvnLM3sD3wWHFEcpmJ+Xf/aQUvqa+kSskowDKkGtOP8/PXgIGS5iocvzip2bqSn5Q93570Hv5IecGI+CgiriM1V5f+bR4mJYNLRMTICj/PF07xJW14vWbW/blG0czqRkTcK+m3wAm5yfQKUvPqd4EjSYnRDoXykWvq9pT0AvA8KUkc3MIl3gGuk3QsqQZxP2Cp/Lsl75Bq434q6WngM2B0RFSq9ZsdeF3S9aSBJGNIie9PSX0WT4uIUuJ5A3Aiqc9gaULuo0hN8JUsL2kYaaDMUsBJwH15IAuSLiYlgo8A7+YyuwL3AETEJ5IOI83n+G3gTlLSOj9ptHlTRPw1X+tZYIs82Ocj4M2IeLOVfyMz66Zco2hmdSUiTiQlVTOTJtduIvXtex1YsazmC+Ag4GbgOFIz64zAAS2c/qW879B8zJLAjhHxr1bimUxaIeZbpP59jwM/bKH4J8AxpGbi04F7ScnuwqSpaI4snPcl0hQ18wN/I80heQhpBHIlB5EG/FxHqnG9Ix9f8hCwKnABaYLvo4GrSANpSte8iNR8vzRwJSlZPJ5UafBk4Vy/ICXEt+fXO7SFmMysm1Pq1mJmVr8kXQVsDWzgKVvMzKrHiaKZ1b08cOMe0ujctSLiuRqHZGbWIzhRNDMzM7OK3EfRzMzMzCpyomhmZmZmFTlRNDMzM7OKnCiamZmZWUVOFM3MzMysIieKZmZmZlbR/wPthZn/MwEZQgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10, 6))\n",
    "ax = plt.gca()\n",
    "\n",
    "# Plot the essence by calling plot_rb_data\n",
    "qv_fitter.plot_qv_data(ax=ax, show_plt=False)\n",
    "\n",
    "# Add title and label\n",
    "ax.set_title('Quantum Volume for up to %d Qubits \\n and %d Trials'%(len(qubit_lists[-1]), ntrials), fontsize=18)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Quantum Volume\n",
    "List statistics for each depth. For each depth list if the depth was successful or not and with what confidence interval. For a depth to be successful the confidence interval must be > 97.5%."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:56.782750Z",
     "start_time": "2019-12-10T22:04:56.775951Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Width/depth 3 greater than 2/3 (0.791562) with confidence 0.985155 (successful). Quantum volume 8\n",
      "Width/depth 4 greater than 2/3 (0.707090) with confidence 0.735022 (unsuccessful).\n",
      "Width/depth 5 greater than 2/3 (0.710508) with confidence 0.752867 (unsuccessful).\n",
      "Width/depth 6 less than 2/3 (unsuccessful).\n"
     ]
    }
   ],
   "source": [
    "qv_success_list = qv_fitter.qv_success()\n",
    "qv_list = qv_fitter.ydata\n",
    "for qidx, qubit_list in enumerate(qubit_lists):\n",
    "    if qv_list[0][qidx]>2/3:\n",
    "        if qv_success_list[qidx][0]:\n",
    "            print(\"Width/depth %d greater than 2/3 (%f) with confidence %f (successful). Quantum volume %d\"%\n",
    "                  (len(qubit_list),qv_list[0][qidx],qv_success_list[qidx][1],qv_fitter.quantum_volume()[qidx]))\n",
    "        else:\n",
    "            print(\"Width/depth %d greater than 2/3 (%f) with confidence %f (unsuccessful).\"%\n",
    "                  (len(qubit_list),qv_list[0][qidx],qv_success_list[qidx][1]))\n",
    "    else:\n",
    "        print(\"Width/depth %d less than 2/3 (unsuccessful).\"%len(qubit_list))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2019-12-10T22:04:56.855466Z",
     "start_time": "2019-12-10T22:04:56.785617Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td>Qiskit</td><td>0.14.0</td></tr><tr><td>Terra</td><td>0.11.0</td></tr><tr><td>Aer</td><td>0.3.4</td></tr><tr><td>Ignis</td><td>0.2.0</td></tr><tr><td>Aqua</td><td>0.6.1</td></tr><tr><td>IBM Q Provider</td><td>0.4.4</td></tr><tr><th>System information</th></tr><tr><td>Python</td><td>3.7.5 (default, Oct 25 2019, 10:52:18) \n",
       "[Clang 4.0.1 (tags/RELEASE_401/final)]</td></tr><tr><td>OS</td><td>Darwin</td></tr><tr><td>CPUs</td><td>4</td></tr><tr><td>Memory (Gb)</td><td>16.0</td></tr><tr><td colspan='2'>Tue Dec 10 17:04:56 2019 EST</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2019.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "nteract": {
   "version": "0.22.0"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
